[PHP][Laravel] Auth::user()でUsersテーブルに関連のあるテーブルからデータを取得したい
バージョン
Laravel 5.7
概要
Usersテーブルの値はAuth::user()で取得できるが、例えばUsersテーブルに関連しているUser_Profilesなどからも値を取得したい場合。
EloquentのEager LoadingでRelationships情報を取得させる。
上記詳細はここを。
laravel.com
ここではUser_Profiles.timezoneを取得する例を紹介。
コード
■Userモデル(Authenticatableを継承)
use App\Models\UserProfile;
class User extends Authenticatable
{
/**
* UserProfile relations
*/
public function userProfile()
{
return $this->hasOne(UserProfile::class);
}
}
呼び出し側の例。
■app/Utils/UtilDate.php
use Illuminate\Support\Facades\Auth; class CommonDate { public static function getUserTimezone() { $timezone = 'UTC'; if (Auth::check()) { $timezone = Auth::user()->load('userProfile')->userProfile->timezone; } return $timezone; } }
loadで親に関連する子の情報を取得するが、他にもwithなど色々とあるので
自身のケースに適したものを使ってください。
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2017/09/16
- メディア: 単行本
- この商品を含むブログを見る