本文參考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的值
貼出完整代碼如下: