我已经找到了很多关于这个问题的答案,但是我现在被查询卡住了,我找不到我做错了什么。
这是我的查询:
$qb = $this->createQueryBuilder('t')
->select('t', 'count(t.views) AS HIDDEN count');
$qb->addOrderBy('count', 'DESC');
$qb->groupBy('t.id');
return $qb->getQuery();
创建的查询如下所示:
SELECT t, count(t.views) AS HIDDEN count FROM Bundle\Entity\Turn t GROUP BY t.id ORDER BY count DESC
我在Symfony2中使用Doctrine2,创建的查询将提供给Pagerfanta Bundle。
如果我缺少任何我需要提供的信息,请在评论中提问。
我得到的查询异常如下:
Query Exception: [Syntax Error] line 0, col 95: Error: Expected end of string, got '('
最佳答案
您可以在order by子句中使用别名。
然后您可以尝试
$qb = $this->createQueryBuilder('t')
->select('t, count(t.views) AS myCount');
$qb->addOrderBy('myCount', 'DESC');
或者,如果您不需要计算结果,而只是为了订单
$qb = $this->createQueryBuilder('t')
->select('t');
$qb->addOrderBy('count(t.views)', 'DESC');
我认为您甚至可以使用AS HIDDEN做到这一点,只需删除无用的引号即可
$qb = $this->createQueryBuilder('t')
->select('t, count(t.views) AS HIDDEN myCount');
$qb->addOrderBy('myCount', 'DESC');