/** * 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); }
/** * @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()); }
/** * @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; }
/** * @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); }