select($qb->expr()->count($queryBuilder->getRootAlias())) // Remove ordering for efficiency; it doesn't affect the count ->resetDQLPart('orderBy') ->getQuery() ->getSingleScalarResult(); } /** * @see FOS\ElasticaBundle\Doctrine\AbstractProvider::fetchSlice() */ protected function fetchSlice($queryBuilder, $limit, $offset) { if (!$queryBuilder instanceof QueryBuilder) { throw new InvalidArgumentTypeException($queryBuilder, 'Doctrine\ORM\QueryBuilder'); } return $queryBuilder ->setFirstResult($offset) ->setMaxResults($limit) ->getQuery() ->getResult(); } /** * @see FOS\ElasticaBundle\Doctrine\AbstractProvider::createQueryBuilder() */ protected function createQueryBuilder() { return $this->managerRegistry ->getManagerForClass($this->objectClass) ->getRepository($this->objectClass) // ORM query builders require an alias argument ->{$this->options['query_builder_method']}('a'); } }