1. 程式人生 > >laravel查詢when方法

laravel查詢when方法

用when方法及匿名函式

https://d.laravel-china.org/docs/5.4/queries#conditional-clauses

有時候,你希望某個值為 true 時才執行查詢。例如,如果在傳入請求中存在指定的輸入值的時候才執行這個 where語句。你可以使用 when 方法實現:

$role = $request->input('role');
 
$users = DB::table('users')
                ->when($role, function ($query) use ($role) {
                    return $query->where('role_id', $role);
                })
                ->get();


只有當 when 方法的第一個引數為 true 時,閉包裡的 where 語句才會執行。如果第一個引數是 false,這個閉包將不會被執行。

你可能會把另一個閉包當作第三個引數傳遞給 when 方法。如果第一個引數的值為 false 時,這個閉包將執行。為了說明如何使用此功能,我們將使用它配置預設排序的查詢:

$sortBy = null;
 
$users = DB::table('users')
                ->when($sortBy, function ($query) use ($sortBy) {
                    return $query->orderBy($sortBy);
                }, function ($query) {
                    return $query->orderBy('name');
                })
                ->get();