Как я могу подсчитать строки в запросе с предложением HAVING?Doctrine - строки COUNT, когда используется предложение HAVING
У меня есть запрос для выборки разбивается на страницы данных, как показано ниже (но немного сложнее):
$qb = $this->em->createQueryBuilder()
->select('p')
->from('Application\Entity\Modules_ProductVersions', 'p', 'p.id')
->leftJoin('p.stocks', 's')
->groupBy('p.id')
->having('SUM(s.stock) > 0');
$qb->setMaxResults($limit)
->setFirstResult($page * $limit);
Я хочу дополнительно подсчета строк, СТГ, как: (Althought, что вызывает Error: Class «(» является не определен):
SELECT COUNT(x) FROM (
SELECT p.id
FROM Application\Entity\Modules_ProductVersions p
LEFT JOIN p.stocks s
GROUP BY p.id
HAVING SUM(s.stock) > 0
) x
Как легко сделать, используя уже строили запрос
мне удалось, что с помощью гена участвующий в рейтинге SQL:
foreach($query->getParameters() as $param) {
$params[] = $param->getValue();
};
$count = $this->em->getConnection()->fetchColumn(
'SELECT COUNT(i) FROM ('.$query->getSQL().') i',
$params
);
Но я бы предпочел какой-то метод QueryBuilder или по крайней мере DQL.