src/Sulu/Bundle/MediaBundle/Entity/CollectionRepository.php
private function getIdsQuery(
        $depth = 0,
        $filter = [],
        $sortBy = [],
        CollectionInterface $collection = null,
        $select = 'collection.id'
    ) {
        $queryBuilder = $this->createQueryBuilder('collection')
            ->select($select)
            ->where('collection.depth <= :depth');

        $collectionDepth = null !== $collection ? $collection->getDepth() : 0;
        $queryBuilder->setParameter('depth', $collectionDepth + $depth);

        if (null !== $collection) {
            $queryBuilder->andWhere('collection.lft BETWEEN :lft AND :rgt AND collection.id != :id');
            $queryBuilder->setParameter('lft', $collection->getLft());
            $queryBuilder->setParameter('rgt', $collection->getRgt());
            $queryBuilder->setParameter('id', $collection->getId());
        }

        if (array_key_exists('search', $filter) && null !== $filter['search'] ||
            array_key_exists('locale', $filter) ||
            count($sortBy) > 0
        ) {
            $queryBuilder->leftJoin('collection.meta', 'collectionMeta');
            $queryBuilder->leftJoin('collection.defaultMeta', 'defaultMeta');
        }

        if (array_key_exists('search', $filter) && null !== $filter['search']) {
            $queryBuilder->andWhere('collectionMeta.title LIKE :search OR defaultMeta.locale != :locale');
            $queryBuilder->setParameter('search', '%' . $filter['search'] . '%');
        }

        if (array_key_exists('locale', $filter)) {
            $queryBuilder->andWhere('collectionMeta.locale = :locale OR defaultMeta.locale != :locale');
            $queryBuilder->setParameter('locale', $filter['locale']);
        }

        if (array_key_exists('systemCollections', $filter) && !$filter['systemCollections']) {
            $queryBuilder->leftJoin('collection.type', 'collectionType');
            $queryBuilder->andWhere('collectionType.key != :type');
            $queryBuilder->setParameter('type', SystemCollectionManagerInterface::COLLECTION_TYPE);
        }

        if (count($sortBy) > 0) {
            foreach ($sortBy as $column => $order) {
                $queryBuilder->addOrderBy(
                    'collectionMeta.' . $column,
                    ('asc' === strtolower($order) ? 'ASC' : 'DESC')
                );
            }
        }

        $queryBuilder->addOrderBy('collection.id', 'ASC');

        if (array_key_exists('limit', $filter)) {
            $queryBuilder->setMaxResults($filter['limit']);
        }
        if (array_key_exists('offset', $filter)) {
            $queryBuilder->setFirstResult($filter['offset']);
        }

        return $queryBuilder->getQuery();
    }
private function getIdsQuery(
        $depth = 0,
        $filter = [],
        $sortBy = [],
        CollectionInterface $collection = null,
        $select = 'collection.id'
    ) {
        $queryBuilder = $this->createQueryBuilder('collection')
            ->select($select)
            ->where('collection.depth <= :depth');

        $collectionDepth = null !== $collection ? $collection->getDepth() : 0;
        $queryBuilder->setParameter('depth', $collectionDepth + $depth);

        if (null !== $collection) {
            $queryBuilder->andWhere('collection.lft BETWEEN :lft AND :rgt AND collection.id != :id');
            $queryBuilder->setParameter('lft', $collection->getLft());
            $queryBuilder->setParameter('rgt', $collection->getRgt());
            $queryBuilder->setParameter('id', $collection->getId());
        }

        if (array_key_exists('search', $filter) && null !== $filter['search'] ||
            array_key_exists('locale', $filter) ||
            count($sortBy) > 0
        ) {
            $queryBuilder->leftJoin('collection.meta', 'collectionMeta');
            $queryBuilder->leftJoin('collection.defaultMeta', 'defaultMeta');
        }

        if (array_key_exists('search', $filter) && null !== $filter['search']) {
            $queryBuilder->andWhere('collectionMeta.title LIKE :search OR defaultMeta.locale != :locale');
            $queryBuilder->setParameter('search', '%' . $filter['search'] . '%');
        }

        if (array_key_exists('locale', $filter)) {
            $queryBuilder->andWhere('collectionMeta.locale = :locale OR defaultMeta.locale != :locale');
            $queryBuilder->setParameter('locale', $filter['locale']);
        }

        if (array_key_exists('systemCollections', $filter) && !$filter['systemCollections']) {
            $queryBuilder->leftJoin('collection.type', 'collectionType');
            $queryBuilder->andWhere('collectionType.key != :type');
            $queryBuilder->setParameter('type', SystemCollectionManagerInterface::COLLECTION_TYPE);
        }

        if (count($sortBy) > 0) {
            foreach ($sortBy as $column => $order) {
                $queryBuilder->addOrderBy(
                    'collectionMeta.' . $column,
                    ('asc' === strtolower($order) ? 'ASC' : 'DESC')
                );
            }
        }

        $queryBuilder->addOrderBy('collection.id', 'ASC');

        if (array_key_exists('limit', $filter)) {
            $queryBuilder->setMaxResults($filter['limit']);
        }
        if (array_key_exists('offset', $filter)) {
            $queryBuilder->setFirstResult($filter['offset']);
        }

        return $queryBuilder->getQuery();
    }
private function getIdsQuery ( $ depth = 0 , $ filter = [ ] , $ sortBy = [ ] , CollectionInterface $ collection = null , $ select = 'collection.id' ) { $ queryBuilder = $ this -> createQueryBuilder ( 'collection' ) -> select ( $ select ) -> where ( 'collection.depth <= :depth' ) ; $ collectionDepth = null !== $ collection ? $ collection -> getDepth ( ) : 0 ; $ queryBuilder -> setParameter ( 'depth' , $ collectionDepth + $ depth ) ; if ( null !== $ collection ) { $ queryBuilder -> andWhere ( 'collection.lft BETWEEN :lft AND :rgt AND collection.id != :id' ) ; $ queryBuilder -> setParameter ( 'lft' , $ collection -> getLft ( ) ) ; $ queryBuilder -> setParameter ( 'rgt' , $ collection -> getRgt ( ) ) ; $ queryBuilder -> setParameter ( 'id' , $ collection -> getId ( ) ) ; } if ( array_key_exists ( 'search' , $ filter ) && null !== $ filter [ 'search' ] || array_key_exists ( 'locale' , $ filter ) || count ( $ sortBy ) > 0 ) { $ queryBuilder -> leftJoin ( 'collection.meta' , 'collectionMeta' ) ; $ queryBuilder -> leftJoin ( 'collection.defaultMeta' , 'defaultMeta' ) ; } if ( array_key_exists ( 'search' , $ filter ) && null !== $ filter [ 'search' ] ) { $ queryBuilder -> andWhere ( 'collectionMeta.title LIKE :search OR defaultMeta.locale != :locale' ) ; $ queryBuilder -> setParameter ( 'search' , '%' . $ filter [ 'search' ] . '%' ) ; } if ( array_key_exists ( 'locale' , $ filter ) ) { $ queryBuilder -> andWhere ( 'collectionMeta.locale = :locale OR defaultMeta.locale != :locale' ) ; $ queryBuilder -> setParameter ( 'locale' , $ filter [ 'locale' ] ) ; } if ( array_key_exists ( 'systemCollections' , $ filter ) && ! $ filter [ 'systemCollections' ] ) { $ queryBuilder -> leftJoin ( 'collection.type' , 'collectionType' ) ; $ queryBuilder -> andWhere ( 'collectionType.key != :type' ) ; $ queryBuilder -> setParameter ( 'type' , SystemCollectionManagerInterface :: COLLECTION_TYPE ) ; } if ( count ( $ sortBy ) > 0 ) { foreach ( $ sortBy as $ column => $ order ) { $ queryBuilder -> addOrderBy ( 'collectionMeta.' . $ column , ( 'asc' === strtolower ( $ order ) ? 'ASC' : 'DESC' ) ) ; } } $ queryBuilder -> addOrderBy ( 'collection.id' , 'ASC' ) ; if ( array_key_exists ( 'limit' , $ filter ) ) { $ queryBuilder -> setMaxResults ( $ filter [ 'limit' ] ) ; } if ( array_key_exists ( 'offset' , $ filter ) ) { $ queryBuilder -> setFirstResult ( $ filter [ 'offset' ] ) ; } return $ queryBuilder -> getQuery ( ) ; }
Returns the basic query which selects the ids of a collection for a given
set of parameters.

@param int $depth
@param array $filter
@param array $sortBy
@param CollectionInterface|null $collection
@param string $select

@return Query
Returns the basic query which selects the ids of a collection for a given set of parameters .