我有一个表stats
像这样:
id | post_id | num_yes | num_no
1 | 1 | 2 | 0
2 | 1 | 3 | 3
3 | 1 | 1 | 0
如何按
num_yes - num_no
的差异排序?输出应为1, 3, 2
(就id
而言)。我目前有这个:
$posts = Post::join('stats', 'stats.id', '=', 'posts.id')
->where('post_id', 1)
->orderByRaw('MAX(stats.num_yes - stats.num_no)', 'DESC')
->get();
但这是行不通的。我怎样才能解决这个问题?
最佳答案
您按MAX(stats.num_yes - stats.num_no)
排序,这将为您提供这些列(跨所有行)之间的差异的最大值。您真的只想按每行这些列之间的差排序:
$posts = Post::join('stats', 'stats.id', '=', 'posts.id')
->where('post_id', 1)
->orderByRaw('(stats.num_yes - stats.num_no)', 'DESC')
->get();
关于laravel - Eloquent :按最大差异排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36227332/