[Laravel]JOINでサブクエリを使用する方法

2019年4月26日

はじめに

サブクエリを使ったJOINを書きたい・・・!

 

思い立ちドキュメントを調べるも記載は無く・・・

解決法が見つからないまま、ゴリゴリ削られる精神(豆腐)

そんなトキあの方の姿が・・・!

 

環境

Laravel: 5.5

 

JoinSub関数を使う

Laravelのドキュメントを探しても記載が無かったので直接 Builder.php を覗いてみるとJoinSubの文字が!

 

と、トキさん!

 

使い方

$subSQL = DB::table('role')->toSql();

DB::table('users')->JoinSub($subSQL, 'ROLE', 'users.roleNo', 'ROLE.no')->get();

//selec * from users join ((select * from role) AS ROLE) ON  users.roleNo = ROLE.no

 

 

サブクエリを使ったLEFT JOINがしたい

そんな時はleftJoinSubを使いましょう!

 

トキさん!

 

使い方

$subSQL = DB::table('role')->toSql();

DB::table('users')->leftJoinSub($subSQL, 'ROLE', 'users.roleNo', 'ROLE.no')->get();

//selec * from users left join ((select * from role) AS ROLE) ON users.roleNo = ROLE.no

 

 

サブクエリを使ったRight JOINがしたい

もうわかっていますね?

rightJoinSubを使いましょう!

 

あ~トキさ~ん(絶頂

 

使い方

$subSQL = DB::table('role')->toSql();

DB::table('users')->rightJoinSub($subSQL, 'ROLE', 'users.roleNo', 'ROLE.no')->get();

//selec * from users right join ((select * from role) AS ROLE) ON users.roleNo = ROLE.no

 

 

まとめ

生のソースコードを読むとドキュメントに乗ってない関数がたくさんあります。

管理人はphpstormを使っているので、これで一発で見つかります。

phpstormいいぞ~

 

今日はこの辺でー

 

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-Laravel
-, , ,