예제 #1
0
파일: Pager.php 프로젝트: xamin123/platform
 /**
  * Calculates count
  *
  * @return int
  */
 public function computeNbResult()
 {
     $countQb = $this->countQueryBuilderOptimizer->getCountQueryBuilder($this->getQueryBuilder());
     $query = $countQb->getQuery();
     if (!$this->skipAclCheck) {
         $query = $this->aclHelper->apply($query);
     }
     $useWalker = null;
     if ($this->skipCountWalker !== null) {
         $useWalker = !$this->skipCountWalker;
     }
     return QueryCountCalculator::calculateCount($query, $useWalker);
 }
 /**
  * @param string $dql
  * @param string $expectedCountQuery
  * @param array  $sqlParameters
  * @param array  $types
  * @param array  $queryParameters
  *
  * @dataProvider getCountDataProvider
  */
 public function testCalculateCount($dql, $expectedCountQuery, array $sqlParameters = array(), array $types = array(), 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);
     $connection->expects($this->once())->method('executeQuery')->with($expectedCountQuery, $sqlParameters, $types)->will($this->returnValue($statement));
     $statement->expects($this->any())->method('fetch')->will($this->onConsecutiveCalls(['sclr0' => self::TEST_COUNT], false));
     $statement->expects($this->any())->method('fetchColumn')->will($this->returnValue(self::TEST_COUNT));
     $this->assertEquals(self::TEST_COUNT, QueryCountCalculator::calculateCount($query));
 }
 /**
  * {@inheritDoc}
  */
 public function count()
 {
     if (null === $this->totalCount) {
         $query = $this->cloneQuery($this->getQuery());
         // restore original max results
         $query->setMaxResults($this->maxResults);
         $this->totalCount = QueryCountCalculator::calculateCount($query, $this->useCountWalker);
     }
     return $this->totalCount;
 }
 public function testCalculateCountForInvalidQueryTypeAndUseWalker()
 {
     QueryCountCalculator::calculateCount(123, true);
 }
예제 #5
0
 /**
  * @param mixed $query
  *
  * @return int
  */
 protected function calculateCount($query)
 {
     return QueryCountCalculator::calculateCount($query);
 }
 /**
  * @param string $entity
  *
  * @return int
  */
 protected function getRowCount($entity)
 {
     /** @var QueryBuilder $qb */
     $qb = $this->em->getRepository($entity)->createQueryBuilder('e');
     return QueryCountCalculator::calculateCount($qb->getQuery());
 }
예제 #7
0
 /**
  * @param EntityConfigModel $entity
  * @return int
  */
 protected function getRowCount(EntityConfigModel $entity)
 {
     if (class_exists($entity->getClassName())) {
         /** @var QueryBuilder $qb */
         $qb = $this->getDoctrine()->getManagerForClass($entity->getClassName())->createQueryBuilder();
         $qb->select('entity');
         $qb->from($entity->getClassName(), 'entity');
         return QueryCountCalculator::calculateCount($qb->getQuery());
     }
     return 0;
 }
예제 #8
0
 /**
  * @param mixed $query
  *
  * @return int
  */
 protected function calculateTotalCount($query)
 {
     if ($query instanceof QueryBuilder) {
         $countQuery = $this->countQueryBuilderOptimizer->getCountQueryBuilder($query)->getQuery();
     } elseif ($query instanceof Query) {
         $countQuery = $this->cloneQuery($query)->setMaxResults(null)->setFirstResult(null);
     } elseif ($query instanceof SqlQueryBuilder) {
         $countQuery = $this->cloneQuery($query)->setMaxResults(null)->setFirstResult(null)->getQuery();
     } elseif ($query instanceof SqlQuery) {
         $countQuery = $this->cloneQuery($query)->getQueryBuilder()->setMaxResults(null)->setFirstResult(null);
     } else {
         throw new \InvalidArgumentException(sprintf('Expected instance of Doctrine\\ORM\\QueryBuilder, Doctrine\\ORM\\Query' . ', Oro\\Bundle\\EntityBundle\\ORM\\SqlQueryBuilder' . ' or Oro\\Bundle\\EntityBundle\\ORM\\SqlQuery, "%s" given.', is_object($query) ? get_class($query) : gettype($query)));
     }
     return QueryCountCalculator::calculateCount($countQuery);
 }