/** * Calculates count * * @return int */ public function computeNbResult() { $qb = clone $this->getQueryBuilder(); $query = $qb->setFirstResult(null)->setMaxResults(null)->resetDQLPart('orderBy')->getQuery(); $query = $this->aclHelper->apply($query); return QueryCountCalculator::calculateCount($query); }
/** * @param string $dql * @param array $sqlParameters * @param array $types * @param array $queryParameters * * @dataProvider getCountDataProvider */ public function testCalculateCount($dql, array $sqlParameters, array $types, array $queryParameters = array()) { /** @var $entityManager EntityManager|\PHPUnit_Framework_MockObject_MockObject */ /** @var $connection Connection|\PHPUnit_Framework_MockObject_MockObject */ /** @var $statement Statement|\PHPUnit_Framework_MockObject_MockObject */ list($entityManager, $connection, $statement) = $this->prepareMocks(); $query = new Query($entityManager); $query->setDQL($dql); $query->setParameters($queryParameters); $expectedSql = 'SELECT COUNT(*) FROM (' . $query->getSQL() . ') AS e'; $connection->expects($this->once())->method('executeQuery')->with($expectedSql, $sqlParameters, $types)->will($this->returnValue($statement)); $statement->expects($this->once())->method('fetchColumn')->with()->will($this->returnValue(self::TEST_COUNT)); $this->assertEquals(self::TEST_COUNT, QueryCountCalculator::calculateCount($query)); }
/** * {@inheritDoc} */ public function count() { if (null === $this->totalCount) { $countQuery = clone $this->getQuery(); foreach ($this->getQuery()->getHints() as $name => $value) { $countQuery->setHint($name, $value); } $this->totalCount = QueryCountCalculator::calculateCount($countQuery, $this->parameters); } return $this->totalCount; }
/** * {@inheritdoc} */ public function computeNbResult() { $qb = clone $this->getQueryBuilder(); $rootAlias = $qb->getRootAlias(); $rootField = $rootAlias . '.id'; $qb->groupBy($rootField); $qb->setFirstResult(null)->setMaxResults(null)->resetDQLPart('orderBy'); QueryBuilderUtility::removeExtraParameters($qb); $query = $qb->getQuery(); return QueryCountCalculator::calculateCount($query); }