编写 Eloquent Query 以查找得票最多的帖子 Laravel

Posted

技术标签:

【中文标题】编写 Eloquent Query 以查找得票最多的帖子 Laravel【英文标题】:Writing Eloquent Query to find posts with most votes Laravel 【发布时间】:2014-08-20 05:41:10 【问题描述】:

我在编写 Eloquent 查询时遇到了问题,该查询找到了我的帖子获得了最多的选票。我有一个投票表和一个帖子表。 votes 表有一个 id 列、一个 post_id 列、一个 user_id 列和一个 vote 列。如果有人为帖子投票,则投票列的值设置为 1。如果有人对帖子投反对票,则投票列设置为 0。我可以使用以下查询找到一个帖子的投票数:

Vote::where('post_id','=', $post->id)->where('vote','=',1)->count()

如何改进此查询以找到得票最多的帖子?我试过想出一种方法,但我似乎做不到。非常感谢。

【问题讨论】:

您是否考虑在 Eloquent 查询中添加 orderBy()? laravel 4 how to order by using eloquent orm 这就是你想要的***.com/questions/24418176/… 【参考方案1】:

就这样吧……

DB::table('votes')->orderBy(DB::raw('sum(\'vote\')'))
                ->groupBy('post_id')->get();

这将根据他们的 SUM 对您的投票进行排序

【讨论】:

谢谢,但我正在尝试按票数排序帖子。这能为我做吗?我希望能够返回帖子标题、正文和其他类似内容。 那么你要做的就是 Vote::where('post_id','=', $post->id)->orderBy('vote')->get() 如果上面的评论实际上是您想要的(所有帖子按投票排序)但是您最初的问题似乎是说您想找到投票最多的帖子。

以上是关于编写 Eloquent Query 以查找得票最多的帖子 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

如何从数据库中选择得票最多的用户?

laravel 5.1 中 Eloquent 和 Query Builder 有啥区别?

如何使用 Eloquent 在 Laravel 中开始查询?

PTA的C语言题

Laravel Query:为 Query Builder 实现 Eloquent Scope

将 MariaDB 语句转换为 Laravel4 Eloquent-Query