优美的:按最大差异排序?

3
我有一个名为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
你正在使用 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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接