Eloquentでjoinに名前(別名)をつけたい
LaravelのEloquentでjoinする際にテーブルに別名をつけたい時ってありますよね?
joinする方のテーブルなら->join(‘table as tbl’)のように別名をつけられますが、joinする大元のテーブルだとUser::のように書くのでテーブルの別名がつけられません。
今回はそのような場合の対象方法についてご紹介していきます。
Eloquentでjoinに名前(別名)をつける方法
Eloquentのjoinで名前(別名)をつけるには、fromを使用することができます!
具体的な使い方についてみていきましょう。
fromを使い方
以下のように記述することで、tableの別名をtblとして定義することができます。
::from( 'table as tbl' )
実際の使用例
こちらが実際の使用例になります。
usersテーブルとdepartmentsテーブルをjoinしてselectする例になります!
joinで指定する際に、usrとして別名でjoinできていることがわかりますね!
User::from( 'users as usr' )
->join('departments as dpt', 'usr.department_id', '=', 'dpt.id')
->get();
クエリビルダを使う方法
クエリビルダでも同じようにjoinできますので、やり方を確認しておきましょう!
クエリビルダでは以下のように書くことができます。
\DB::table('users as usr')
->join('departments as dpt', 'usr.department_id', '=', 'dpt.id')
->get();
まとめ
いかがでしたでしょうか?
今回は、Eloquentでjoinを使用する際に名前(別名)をつける方法を学習しました!
クエリビルダでは簡単に別名をつけることができましたが、Eloquentだとfromを使わないと別名をつけられないので注意です。
普段Eloquentで書いているのでEloquentで書きたい!って時がありますが、そのような時は今回のようにfromを使用して、Eloquentでjoinをしちゃいましょう!
コメント