[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など色々とあるので
自身のケースに適したものを使ってください。




PHPフレームワーク Laravel入門

PHPフレームワーク Laravel入門