Laravel5のQueryBuilderは非常に便利ですが、複雑なwhere条件を書こうとするとwhereRawに頼ってしまいがちです。
しかし可読性を保つためなるべくwhereやorWhereで書いた方が良いと思います。
単純なAnd検索であれば、
$query->where('column1', '=', $value1)
->where('column2', '=', $value2)
単純なOr検索であれば、
$query->where('column1', '=', $value1)
->orWhere('column2', '=', $value2)
しかし、Laravel5を始めたばかりの人が必ず悩むのが(A or B) and (C or D)の条件です。
こういった複合系は次のようにクロージャで書けます。
$query->where(function($query) use($value1, $value2){
$query->where('column1', '=', $value1)
->orWhere('column2', '=', $value2)
});
$query->where(function($query) use($value3, $value4){
$query->where('column1', '=', $value3)
->orWhere('column2', '=', $value4)
});
useを使ってクロージャへ変数を渡してやるのがポイントです。