crossJoinSub メソッドを使う
第一引数にサブクエリを定義したビルダー、第二引数にはエイリアス名(任意の識別子)を記述します。
// サブクエリ
$highPriceFruits = DB::table('fruits')
->select('id AS fruits_id', 'name AS fruits_name'))
->where('price', '>', '500');
// サブクエリを CROSS JOIN する
$users = DB::table('users')
->crossJoinSub($highPriceFruits, 'hign_price_fruits')
->get();
余談
サブクエリとの結合については、joinSub、leftJoinSub、rightJoinSubメソッドが用意されている旨の内容がドキュメントですぐに見つかりました。
しかしながら、crossJoinに関しては記載がなかったので、用意がないのかなと思ってしまいましたが、そこはさすがのLaravelです。
バージョン 8.x で crossJoinSub メソッドがクエリビルダに追加されたということ。
クエリビルダすごい…
参考文献