mysql查询到querybuilder

问题描述 投票:0回答:1

是否有一种方法可以使查询生成器类似于在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();

但是我不知道是否可以在Querybuilder中执行与Mysql类似的OrderBy?

mysql doctrine query-builder symfony-2.8
1个回答
0
投票

您可以这样重写查询:

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();
© www.soinside.com 2019 - 2024. All rights reserved.