我有一个与实体类别相关的实体视频,我需要使用Doctrine QueryBuilder运行此SQL,我可以在所有视频中获得最常用的类别(1000+):
SELECT c.*
FROM Video v
INNER JOIN video_category vc ON vc.video_id = v.id
INNER JOIN Category c ON vc.category_id = c.id
GROUP BY c.id
HAVING COUNT(v.id) > 1000
ORDER BY c.name ASC;
Run Code Online (Sandbox Code Playgroud)
我的查询器:
$queryBuilder = $this->getEntityManager()
->createQueryBuilder()
->select('c')
->from('AcmeVideoBundle:Video', 'v')
// Can Doctrine join itself silently with relational info in the Entities?
->join('AcmeCategoryBundle:Category', 'c', Expr\Join::WITH, 'v.id = c.id')
->groupBy('c.id')
->having('COUNT(v.id) > 1000')
->orderBy('c.name', 'ASC')
->getQuery();
Run Code Online (Sandbox Code Playgroud)
但是queryBuilder输出的SQL查询是这样的:
SELECT c0_.id AS id0, c0_.NAME AS name1
FROM Video v1_
INNER JOIN …
Run Code Online (Sandbox Code Playgroud)