LaravelでDBから検索して値を取得するときにEloquentクエリビルダーを使用していて、複数の条件を設定したいときってありますよね。
Post::where('status', '=', 1)
->where('author_id', '=', 1)
->where('tag_id', '=', 1)
->get();
これでも動作はします。
でもあまりに長くwhereが連なっているとコードの可読性が落ちます。
そんなときはこうするといいです。
$cond = ['status' => 1, 'author_id' => 1, 'tag_id' => 1];
Post::where($cond)->get();
ちなみにこれは検索条件がすべてイコールの場合です。
それ以外、とか1以上、みたいなイコール以外の場合には設定する条件の連想配列を以下のようにします。
$cond = [['status', '<>', 1], ['author_id', '=', 1], ['tag_id', '>', 1]];
Post::where($cond)->get();
これでイコール以外にも柔軟に、可読性の高いコードになりますね。
Laravelで稼げる中級エンジニアになるための動画教材