天天看點

laravel的Auth類添加自定義參數

本文參考Laravel官方文檔:https://laravel.com/docs/6.x/eloquent-mutators

Auth類預設隻能擷取User模型的資料,如果想在Auth裡擷取其他表中的資料要怎麼做呢?

所幸Eloquent ORM為我們提供了mutators修改器

1. 在User模型中添加要關聯的表的模型關系,例如:AuthDuty表

public function duty()
{
    return $this->hasOne(AuthDuty::class,'user_id','id');
}      

模型關系請參考:https://laravel.com/docs/6.x/eloquent-relationships

2.建立通路器

public function getDutyEmailAttribute()
{
    return $this->duty()->select('duty_email')->first()['duty_email'];
}      

注意:這裡的 getDutyEmailAttribute 方法名中 get 和 Attribute 是固定寫法,真正在模型中的名稱是由 DutyEmail 決定,命名一般是駝峰命名法

3.添加User類的屬性

protected $appends = ['duty_email'];
      

4.接口中寫

Auth::guard('admin')->user()->duty_email;      

即可擷取AuthDuty表中duty_email的值

貼出完整代碼如下:

laravel的Auth類添加自定義參數