all*_*mon 4 php sql dql symfony doctrine-orm
我有两个实体
文章与名为'likesByUsers'的用户有关系
现在,我想通过喜欢的数量订购文章,但是:
我现在拥有的是:
$builder = $this->createQueryBuilder('a');
->select('COUNT(u) AS nbrLikes')
->leftJoin('a.likedByUsers', 'u')
->orderBy('nbrLikes', 'DESC')
->groupBy('a.id')
->getQuery()
->getResult()
;
Run Code Online (Sandbox Code Playgroud)
这正确地返回了喜欢的数量(对于没有喜欢的文章,为0),但它不会返回文章本身
我试过添加
->select('a, COUNT(u) AS HIDDEN nbrLikes')
Run Code Online (Sandbox Code Playgroud)
但它失败了,因为a它不属于GROUP BY
有任何想法吗 ?
如果要选择"多个"值,则需要将它们指定为查询构建器的select方法.就像下面报道的那样
$builder = $this->createQueryBuilder('a')
->select('COUNT(u) AS HIDDEN nbrLikes', 'a.id')
->leftJoin('a.likedByUsers', 'u')
->orderBy('nbrLikes', 'DESC')
->groupBy('a.id')
->getQuery()
->getResult();
Run Code Online (Sandbox Code Playgroud)
您必须记住,结果不是实体,而是关联数组
如果你想要完整的实体
$builder = $this->createQueryBuilder('a')
->select('COUNT(u) AS HIDDEN nbrLikes', 'a')
->leftJoin('a.likedByUsers', 'u')
->orderBy('nbrLikes', 'DESC')
->groupBy('a')
->getQuery()
->getResult();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1507 次 |
| 最近记录: |