Posted at

Laravelのクエリビルダで条件の優先順位に変えるにはクロージャーを使う


コード例


User::where(function ($query) use ($hoge) {
$query->orWhere('hoge', $hoge)->orWhere('fuga', 1);
})->(省略)



sql例

select * from table_names where (columnA = A or columnB = B) and (columnC = C or columnD = D);


sqlは雰囲気です。エラーになりそうです:sweat_smile:

AND条件のほうがORよりも優先度が高く、意図したSQLにならない場合があります。

そんなときは、クロージャを使って書くとカッコが挿入され、優先順位を変えることができます。

Laravel 5.8 データベース:クエリビルダ

パラメータのグループ分け

smith30のエンジニア日誌

mysqlでの論理演算子の優先順位