Example #1
0
 /**
  * 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;
 }
Example #4
0
 /**
  * {@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);
 }