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さんです。

 

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

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

 

 

 

  • この記事を書いた人

カバノキ

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

-Laravel, SQL
-, ,