(A OR B) AND (C OR D)の記事はけっこうあるのですが
(A AND B) OR (C AND D)のパターンは探したけれど見つからなかったので備忘記録。
$data = Sample::where('a', $word1)->where('b', $word2)->orWhere(function($query) use($word1, $word2){
$query->where('c', $word1)->where('d', $word2);
})->get();
クロージャーを利用することで可能。
クロージャ内で変数を使う場合useで渡してあげなければいけないので注意が必要。