我有一张像这样的表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();
但这不起作用。我该如何解决这个问题?
答案 0 :(得分:0)
您按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();