はじめに

同じテーブルを複数回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でサブクエリを使用する方法

 

 

 

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください