雄辩:按最大差异排序?

时间:2016-03-25 20:14:35

标签: laravel laravel-4 eloquent

我有一张像这样的表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();

但这不起作用。我该如何解决这个问题?

1 个答案:

答案 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();