Eloquentでjoinに名前(別名)をつけたい時

Laravel

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をしちゃいましょう!

コメント