laravel查詢when方法
阿新 • • 發佈:2018-12-21
用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();