select($qb->expr()->count($queryBuilder->getRootAlias())) ->resetDQLPart('orderBy'); // no need to order the query. It does not change the count and make the query less efficient. return $qb->getQuery()->getSingleScalarResult(); } /** * Fetches a slice of objects * * @param queryBuilder * @param int limit * @param int offset * @return array of objects **/ protected function fetchSlice($queryBuilder, $limit, $offset) { $queryBuilder->setFirstResult($offset); $queryBuilder->setMaxResults($limit); return $queryBuilder->getQuery()->getResult(); } /** * Creates the query builder used to fetch the documents to index * * @return query builder **/ protected function createQueryBuilder() { return $this->objectManager->getRepository($this->objectClass)->{$this->options['query_builder_method']}('a'); } }