Laravel 5 の「Auth::user()」のプロパティにJOINしたデータを追加したい
Laravel 5.0 で標準付属の Auth による User 認証を使っています。
その場合 Auth::user()->name などで現在ログイン中のユーザーのプロパティが得られますが、
今回 role というプロパティをもたせ、Auth::user()->role で取得できるようにしたいと考えています。
users テーブルには新しいカラム「role_id」を作り、用意した roles テーブルの id とひもづける予定です。
SQL文は次のようなものです。
SELECT users.*, roles.name AS role FROM `users` INNER JOIN `roles` ON users.role_id = roles.id
辿って行くと、「vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php」の retrieveById() で処理が行われているようなので次のように書き換えて動作することを確認しました。
public function retrieveById($identifier)
{
return $this->createModel()->newQuery()
->select(['users.*', 'roles.name as role'])
->join('roles', 'users.role_id', '=', 'roles.id')
->find($identifier);
// return $this->createModel()->newQuery()->find($identifier);
}
一応はこれでも目的の動作をしてはいますが、本来は何らかの拡張クラスを作って extend するべきなのでしょうか?
もしそうであればどのフォルダにどのような形で追加したら良いのでしょうか。
フレームワークの使い方自体まだ不慣れで良く理解できていません。よろしくお願い致します。