编写 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 中开始查询?