假设我有以下数据库设置
用户表
id
name
发布表
id
post
投票表
id
user_id
post_id
vote (1 = up, -1 = down)
...我们也假设我已经正确地设置了每一对多的关系:)
如何通过上下投票之间的差异查询前5个帖子?
这样的事情会很棒......
$posts = Post::whereHas('votes', function($query) {
$query->orderByRaw('sum(\'vote\'), desc');
})->get();
...我想稍后分页。
答案 0 :(得分:0)
现在正在工作:)
$posts = Post::has('votes')
->leftJoin('votes', 'votes.post_id', '=', 'posts.id')
->selectRaw('posts.*, sum(votes.vote) as votes_sum')
->groupBy('posts.id')
->orderBy('votes_sum', 'desc')
->paginate(5);