ぷっぽプログラミング備忘録

linux, javascript, php, C#, そのうちScalaとかアプリ開発とかやってみたいです。

Laravelのクエリービルダー(query builder)でLATERALを使う場合

DB::table('foo as f')
->leftJoin(
   DB::raw("
          LATERAL ( 
            SELECT
               MIN(goods.amount) as min_amount 
            FROM
               goods
            WHERE
                foo.goods_id = goods_id
         ) as temp_min_amount
   "),
   DB::raw('1'),
   '=',
   DB::raw('1')
)
->select('f.*', 'temp_min_amount.min_amount )
->get();

ポイント

  • DB::rawを使う
  • ON句が不要の場合は、SQL的には ON 1 = 1 とか ON TRUE とかにしたいのだが、laravel的には ON 1 = 1 一択っぽい。ただし、 1=1 するためには、DB::raw('1') = DB::raw('1')としないといけない