MySQL запрос в построитель запросов - PullRequest
0 голосов
/ 26 сентября 2019

Есть ли способ сделать построитель запросов похожим на следующий, созданный в Mysql:

"SELECT a.* FROM fsa_areas ORDER BY (SELECT count(*) FROM fsa_areas a1 WHERE a1.Responsible = a.Responsible) DESC LIMIT 1;


Я пытаюсь это:

$em->getRepository('FSABundle:FsaAreas')->createQueryBuilder('u')
        ->select('u.name, u.responsible')
        ->where('u.enabled = true')
        ->orderBy('  ','DESC')
        ->getQuery()->getResult();


Но я не знаю, возможно ли сделать такой же OrderBy в Querybuilder, как в Mysql?

1 Ответ

0 голосов
/ 27 сентября 2019

Вы можете переписать запрос следующим образом:

SELECT a.* FROM fsa_areas a
LEFT JOIN fsa_areas a1 ON(a1.responsible = a.responsible)
GROUP BY a.id
ORDER BY COUNT(a1.id) DESC;

И преобразовать его для построителя запросов:

$entityManager
        ->getRepository(FsaAreas::class)
        ->createQueryBuilder('a')
        ->select('a')
        ->leftJoin(FsaAreas::class, 'a1', Expr\Join::WITH, 'a1.responsible = a.responsible')
        ->groupBy('a')
        ->orderBy('COUNT(a1)', 'DESC')
        ->getQuery()
        ->getResult();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...