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

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

単純なAnd検索であれば、

単純なOr検索であれば、

 

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

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

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