Sonata\ProductBundle\Entity\ProductManager::queryInSameCollections PHP Method

queryInSameCollections() protected method

protected queryInSameCollections ( array $productCollections, null | integer $limit = null ) : Doctrine\ORM\QueryBuilder
$productCollections array
$limit null | integer
return Doctrine\ORM\QueryBuilder
    protected function queryInSameCollections($productCollections, $limit = null)
    {
        $collections = array();
        $productIds = array();
        foreach ($productCollections as $pCollection) {
            $collections[] = $pCollection->getCollection();
            if (false === array_search($pCollection->getProduct()->getId(), $productIds)) {
                $productIds[] = $pCollection->getProduct()->getId();
            }
        }
        $queryBuilder = $this->getRepository()->createQueryBuilder('p')->distinct()->leftJoin('p.productCollections', 'pc')->where('pc.collection IN (:collections)')->andWhere('p.id NOT IN (:productIds)')->setParameter('collections', array_values($collections))->setParameter('productIds', array_values($productIds));
        if (null !== $limit) {
            $queryBuilder->setMaxResults($limit);
        }
        return $queryBuilder;
    }