1
0
mirror of synced 2025-01-19 06:51:40 +03:00

#1188 - making Doctrine\ORM\Tools\Pagination\Paginator#getCountQuery() private, as it is an implementation detail

This commit is contained in:
Marco Pivetta 2014-11-27 17:48:37 +01:00
parent a80117a4ee
commit 69064ac13d

View File

@ -127,44 +127,6 @@ class Paginator implements \Countable, \IteratorAggregate
return $this->count; return $this->count;
} }
/**
* Returns Query prepared to count.
*
* @return Query
*/
public function getCountQuery()
{
/* @var $countQuery Query */
$countQuery = $this->cloneQuery($this->query);
if ( ! $countQuery->hasHint(CountWalker::HINT_DISTINCT)) {
$countQuery->setHint(CountWalker::HINT_DISTINCT, true);
}
if ($this->useOutputWalker($countQuery)) {
$platform = $countQuery->getEntityManager()->getConnection()->getDatabasePlatform(); // law of demeter win
$rsm = new ResultSetMapping();
$rsm->addScalarResult($platform->getSQLResultCasing('dctrn_count'), 'count');
$countQuery->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'Doctrine\ORM\Tools\Pagination\CountOutputWalker');
$countQuery->setResultSetMapping($rsm);
} else {
$this->appendTreeWalker($countQuery, 'Doctrine\ORM\Tools\Pagination\CountWalker');
}
$countQuery->setFirstResult(null)->setMaxResults(null);
$parser = new Query\Parser($countQuery);
$parameterMappings = $parser->parse()->getParameterMappings();
$parameters = $countQuery->getParameters();
foreach ($parameters as $k => $param){
if( ! array_key_exists($param->getName(), $parameterMappings)) {
$parameters->remove($k);
}
}
$countQuery->setParameters($parameters);
return $countQuery;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
@ -267,4 +229,44 @@ class Paginator implements \Countable, \IteratorAggregate
$hints[] = $walkerClass; $hints[] = $walkerClass;
$query->setHint(Query::HINT_CUSTOM_TREE_WALKERS, $hints); $query->setHint(Query::HINT_CUSTOM_TREE_WALKERS, $hints);
} }
/**
* Returns Query prepared to count.
*
* @return Query
*/
private function getCountQuery()
{
/* @var $countQuery Query */
$countQuery = $this->cloneQuery($this->query);
if ( ! $countQuery->hasHint(CountWalker::HINT_DISTINCT)) {
$countQuery->setHint(CountWalker::HINT_DISTINCT, true);
}
if ($this->useOutputWalker($countQuery)) {
$platform = $countQuery->getEntityManager()->getConnection()->getDatabasePlatform(); // law of demeter win
$rsm = new ResultSetMapping();
$rsm->addScalarResult($platform->getSQLResultCasing('dctrn_count'), 'count');
$countQuery->setHint(Query::HINT_CUSTOM_OUTPUT_WALKER, 'Doctrine\ORM\Tools\Pagination\CountOutputWalker');
$countQuery->setResultSetMapping($rsm);
} else {
$this->appendTreeWalker($countQuery, 'Doctrine\ORM\Tools\Pagination\CountWalker');
}
$countQuery->setFirstResult(null)->setMaxResults(null);
$parser = new Query\Parser($countQuery);
$parameterMappings = $parser->parse()->getParameterMappings();
$parameters = $countQuery->getParameters();
foreach ($parameters as $k => $param){
if( ! array_key_exists($param->getName(), $parameterMappings)) {
$parameters->remove($k);
}
}
$countQuery->setParameters($parameters);
return $countQuery;
}
} }