【发布时间】:2020-10-06 14:28:05
【问题描述】:
我有以下原始查询:
select *
from (select * from settings order by priority desc) x
group by name
我想改用 laravel 5 查询生成器,但无法让子查询工作。有没有办法在不使用原始查询的情况下做到这一点?
桌子:
id - name - priority
1 1 1
2 1 2
3 2 1
在上述情况下,它将像我想要的那样返回第 2 行和第 3 行
我试过这个查询:
$settings = \App\Setting::where('user_id', Auth::id())->orWhere('tool_id', $id)->groupBy('name')->orderBy('priority', 'desc')->get();
但这将返回第 1 行和第 3 行。
【问题讨论】:
-
这没有意义,只需使用子选择。没有理由按名称分组,因为您没有汇总任何其他字段
-
@RichBenner 为了更清晰,我编辑了我的帖子
-
尝试 Query Builder 而不是 Eloquent 就像这个答案 stackoverflow.com/a/31864088/3018183