SQLを使わずに、laravelのクエリビルダーでOR演算子が途中で入る場合の()で優先順位を上げる方法を調べてみた。

SQLを使わずに、laravelのクエリビルダーでOR演算子が途中で入る場合の()で優先順位を上げる方法を調べてみた。

クエリービルダーでは、何も指定しないとAND演算子で接続される
WHERE A=1 AND B=2 AND C=3

OR演算子の指定も出来る
WHERE A=1 AND B=2 OR C=3

ただし、AND演算子の方が強いので、処理の優先順位はこうなる
WHERE (A=1 AND B=2) OR C=3
OR演算子を優先したい場合には、通常のSQLでは()で囲んで指定する

A=1 AND (B=2 OR C=3) ←この条件で検索したい!
こうすれば出来るかと思ったけどダメ~。

あきらめて、素直に英語ドキュメントを探したら、あっさりと見つかった。
無名関数を使って記述するのね…。SQLオンリーの方が楽な気もする(^_^;)
https://laravel.com/docs/5.1/queries#advanced-where-clauses

これが正解
A=1 AND (B=2 OR C=3)

日本語で調べても分からない時には、素直に英語で調べるのが早道だな・・・。

コメントを残す

メールアドレスが公開されることはありません。