Laravel5のQueryBuilderは非常に便利ですが、複雑なwhere条件を書こうとするとwhereRawに頼ってしまいがちです。

しかし可読性を保つためなるべくwhereやorWhereで書いた方が良いと思います。

単純なAnd検索であれば、

単純なOr検索であれば、

 

しかし、Laravel5を始めたばかりの人が必ず悩むのが(A or B) and (C or D)の条件です。

こういった複合系は次のようにクロージャで書けます。

useを使ってクロージャへ変数を渡してやるのがポイントです。

関連するカスタマイズ

API(ajax)をクロスドメイン対応にする方法... APIをクロスドメイン利用する場合、JSONP形式が主流でしたが、'Access-Control-Allow-Origin'等のヘッダーをHTTPレスポンスに含めてやることでも最近のブラウザに対応できます。 Laravelでレスポンスにヘッダーを追加する場合、引数に配列として渡すことが可能...
5.2のwithErrors()メソッドで$errors変数がおかしい場合... Laravel5.2.31のプロジェクトで ResponseのwithErrors()メソッドが動作しない問題が起こり、3時間ぐらいはまったのでシェアします。 コントローラのバリデーションでいつも通り$this->validate()を始めたのですが、$errors変数に入っているはずの...
メールを文字化けしないようISO-2022-JPにエンコード... Laravel5で送信するメールは初期設定でUTF-8なので、メーラーによっては日本語の文字化けが起こります。 Laravel5は多くの人が登録するECサイトやポータルサイトで使用するフレームワークですので、日本向けのサイトであればエンコーディングはISO-2022-JPに変更しておきたいとこ...
No supported encrypter found. The cipher and / or ... Laravel5をインストールしたとき、次のようなエラーが出ることがあります。 RuntimeException in EncryptionServiceProvider.php line 45: No supported encrypter found. The cipher and / or...