共通の絞り込みがある上で、ケース別に絞り込みもしたいときがあると思います。
Laravelで、A and (B or C) の絞り込みをしたいときの書き方についての説明です。
以下は、Hogeテーブルのidカラムの中で、hugaカラムが1またはpiyoカラムが1であるレコードを取得したいケースです。
※Hogeテーブルから、 id = $id and (huga =1 or piyo =1) のように取り出したい、ということです。
$hoge = Hoge::where('id', $id)// 予めid変数を取得しておく
->where(function($q){
$q->where('huga', '=', 1))
->orWhere('piyo', '=', 1);
} )
->get();
別の場所で$fooを定義しておく上で、useを使えば好きな変数で絞りこみもできます。
->where(function($q)use($foo){
$q->where('huga', '=', $foo)
})
リーダブルの記事はこちらとなります。
データベース:クエリビルダ 8.x Laravel
コメント