У меня есть несколько довольно сложных запросов, и для каждого из них я должен написать второй результат подсчета запросов. Так, например, в модели:Второй счетный запрос для разбивки на страницы
$dql = "SELECT u FROM AcmeBundle:Users u LEFT JOIN AcmeBundle:Products p WITH u.id = p.id";
Я бы создать дубликат запроса, как это:
$countingQuery = "SELECT COUNT(u.id) FROM AcmeBundle:Users u LEFT JOIN AcmeBundle:Products p WITH u.id = p.id";
Основная проблема в том, что при каждом изменении в первом запросе, я бы придется менять вторую.
Так что я придумал другую идею:
$countingSelect = "SELECT COUNT(u.id)";
$noncountingSelect = "SELECT u";
$dql = " FROM AcmeBundle:Users u LEFT JOIN AcmeBundle:Products p WITH u.id = p.id";
return $this->getEntityManager()->createQuery($noncountingSelect . $dql)
->setHint('knp_paginator.count', $this->getEntityManager()->createQuery($countingSelect . $dql)->getSingleScalarResult());
Он работает, конечно, но решение кажется довольно некрасиво с большими выбирает.
Как я могу решить эту проблему?