Laravel 5.4
中的等效查询是什么select id,name
from friends
order by case when id in (5,15,25) then -1 else id end,id
答案 0 :(得分:0)
您可以使用raw()来创建原始SQL查询,而不是使用Eloquent的查询构建器。 Here is the documentation for it
如果有帮助,here是Laravel 4中提出的类似问题;旧的,但仍然相关。
我希望它有所帮助!
答案 1 :(得分:0)
有多种方法可以实现这一目标。
如果您想使用Laravel Query Builder:
$result = DB::select('
select id, name
from friends
order by case when id in (5,15,25) then -1 else id end, id
');
如果您想将Laravel Eloquent与Query Builder结合使用:
$result = \App\Friend::select('id', 'name')
->orderBy(DB::raw('case when id in (5,15,25) then -1 else id end'), 'id')->get();
答案 2 :(得分:0)
您可以传递查询的raw
部分,而不是像这样构建整个事物。这样做:
DB::table('your_table')
->orderBy(
DB::raw('case when id in (5,15,25) then -1 else id end,id')
)->get()
将首先返回id为5,15和25(如果存在)的记录,然后按id排序。不确定它是不是你想要的。
答案 3 :(得分:0)
//Controller namespace
use DB;
use App\Friend;
//In controller method
$friends = Friend::select('id', 'name')
->orderBy(DB::raw('case when id in (5,15,25) then -1 else id end,id'))
->get();