👌
Laravelクエリビルダのwhenメソッドの使い方
Laravel Framework 8.43.0 にて検証
コードは下記から引用
whenメソッドの説明を見るとこのような使い方となっている
$users = DB::table('users')
->when($role, function ($query, $role) {
return $query->where('role_id', $role);
})
->get();
// true/falseで処理を分けるパターン
$users = DB::table('users')
->when($sortByVotes, function ($query, $sortByVotes) {
return $query->orderBy('votes');
}, function ($query) {
return $query->orderBy('name');
})
->get();
今回はtrueのみwhereステートメントを適用したかったので省略記法調べたところ
このようにも記載できることがわかった
$users = DB::table('users')
->when($role, fn($query) => $query->where('role_id', $role))
->get();
ちなみにこれはダメらしい
$users = DB::table('users') ->when($role, $query->where('role_id', $role) ->get();
Discussion