Doctrine2按计数排序

时间:2014-07-02 07:47:01

标签: mysql symfony doctrine-orm

我已经找到了很多关于这个问题的答案,但是我现在被我的查询困住了,我无法找出我做错了什么。

这是我的查询:

    $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,创建的Query将被提供给Pagerfanta Bundle。

如果我错过了我需要提供的任何信息,请在评论中提问。

我得到的查询异常如下:

Query Exception: [Syntax Error] line 0, col 95: Error: Expected end of string, got '('

1 个答案:

答案 0 :(得分:0)

您可以在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');