首頁  >  問答  >  主體

登入後如何為「auth()」函數新增值?

<p>我正在使用 Laravel 8 開發一個專案。 </p> <p>我的 Users 表中有一些字段,例如 "us_name","us_surname"。使用者登入後,我可以透過 "auth()->user()->us_name" 等方式取得這些值。到目前為止,沒有問題。 </p> <p>我想做的是在這裡添加一些不在我的表中的值。例如,登入後,將名字和姓氏組合起來,並新增一個名為 "us_fullname" 的新字段,並透過 "auth()->user()->us_fullname" 存取它。我該如何做到這一點? </p>
P粉354948724P粉354948724435 天前362

全部回覆(1)我來回復

  • P粉351138462

    P粉3511384622023-09-04 12:39:52

    透過呼叫auth()->user(),您可以從預設的守衛中取得Authenticatable模型。

    讓我們來看看預設的config/auth.php

    ##
    <?php
    
    return [
        'defaults' => [
            'guard' => 'web',
            'passwords' => 'users',
        ],
        'guards' => [
            'web' => [
                'driver' => 'session',
                'provider' => 'users',
            ],
    
            'api' => [
                'driver' => 'token',
                'provider' => 'users',
                'hash' => false,
            ],
        ],
        'providers' => [
            'users' => [
                'driver' => 'eloquent',
                'model' => App\Models\User::class,
            ]
        ]
    ];

    使用這個預設的Laravel配置,您可以得到:

    1. 預設的守衛是web
    2. web守衛提供者(提供Authenticatable)是users
    3. #users提供者提供了App\Models\User::class
    4. App\Models\User實作了Authenticatable合約

    然後,透過呼叫auth()->user() - 您將獲得App\Models\User::class的實例或null

    回答您的問題

    您可以為User模型新增任何內容(例如full_name),並將其作為auth()->user()->full_name檢索

    #閱讀關於存取器 - 使用它,您可以簡單地新增計算屬性:

    class User extends Authenticatable
    {
      public function getFullNameAttribute()
      {
         return "{$this->first_name} {$this->last_name}";
      }
    }

    回覆
    0
  • 取消回覆