[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
- メディア: 単行本
- この商品を含むブログを見る