laravel中的equivelent orderby case查询是什么?

时间:2017-05-02 18:26:51

标签: laravel

Laravel 5.4

中的等效查询是什么
select id,name
from friends
order by case when id in (5,15,25) then -1 else id end,id

4 个答案:

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