mysql - Doctrine2 按计数排序

标签 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,创建的查询将提供给 Pagerfanta Bundle。

如果我缺少任何需要提供的信息,请在评论中询问。

我收到的查询异常如下:

查询异常:[语法错误]第 0 行,第 95 列:错误:预期字符串结束,得到“(”

最佳答案

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

关于mysql - Doctrine2 按计数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24525646/

相关文章:

forms - Symfony2 : Form's view data issue

mysql - 提高大型 Doctrine 查询的性能

mysql - 对连接数据进行排序

php - COUNT = 0 的 Doctrine2 DQL 问题

mysql - PG::Error : 结果已被清除 Rails 序列化

php - 如何选择多个表将mysql转换为json?

mysql - 如何根据另一个表中的值动态更新一个表中的sql列

mysql - 关于重复键更新 - MariaDB

symfony - 从应用程序目录安装 Assets

php - 在 Symfony/Doctrine 中删除大量用户数据的最佳/快速解决方案