小编Tec*_*cat的帖子

如何在没有关系表的情况下使用两个实体之间的QueryBuilder在Symfony Doctrine中加入

我有一个与实体类别相关的实体视频,我需要使用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)

php mysql sql symfony doctrine-orm

6
推荐指数
2
解决办法
3万
查看次数

标签 统计

doctrine-orm ×1

mysql ×1

php ×1

sql ×1

symfony ×1