忘れないように記録しとこ

カバの樹

Laravelのjoinで同じテーブルを複数回結合する方法

はじめに

同じテーブルを複数回JOINしたい場合があります。

素のSQLで書こうと思ったら簡単に書くことができます。

しかしLaravelQueryBuilderを使って書くには・・・?

 

環境

Laravel:5.5

 

joinSubを使って結合する

LaravelQueryBuilderjoinにはエイリアスのパラメーターが無いので、同じテーブルを複数回結合する時に利用できません。

しかしjoinSubにはエイリアス用のパラメーターがあるのです!

joinSubは世界を救う!

 

joinSubを使った例

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

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

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

まとめ

LaravelQueryBuilderを使って同じテーブルを複数回結合する方法を書きました。

joinSubの本来の使い方とは違うので思ったよりもテクニカルなやり方かもしれません。

しかしこれで問題が解決します。

さすがjoinSubさんです。

 

↓過去に以下の記事を書いたので、興味がありましたらどぞー

https://www.kabanoki.net/3259/

 

 

 

  • B!