目次
はじめに
同じテーブルを複数回JOINしたい場合があります。
素のSQLで書こうと思ったら簡単に書くことができます。
しかしLaravelのQueryBuilderを使って書くには・・・?
環境
Laravel:5.5
joinSubを使って結合する
LaravelのQueryBuilderのjoinにはエイリアスのパラメーターが無いので、同じテーブルを複数回結合する時に利用できません。
しかし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
まとめ
LaravelのQueryBuilderを使って同じテーブルを複数回結合する方法を書きました。
joinSubの本来の使い方とは違うので思ったよりもテクニカルなやり方かもしれません。
しかしこれで問題が解決します。
さすがjoinSubさんです。
↓過去に以下の記事を書いたので、興味がありましたらどぞー
https://www.kabanoki.net/3259/