如何从belongsToMany关系中返回一个值。
这是我的关系:
public function role() {
return $this->belongsToMany('App\Role');
}
现在,当我想访问角色名称时,我必须执行以下操作:
Auth::user()->role[0]->name
但我只想做
Auth::user()->role
但现在我的问题是:"我该怎么做?"
答案 0 :(得分:3)
要执行此操作,您需要将自定义属性添加到用户模型,如下所示:
用户模型:
protected $appends = ['role']; // add new attribute to user model
public function getRoleAttribute()
{
return $this->roles->first(); // don't use roles() it would execute every time
}
public function roles() {
return $this->belongsToMany('App\Role');
}
现在可以使用
Auth::user()->role
答案 1 :(得分:0)
Auth::user()->role()->first()
除了问题本身,我建议你使用belogsToMany关系的复数名称:这是一种常见的最佳实践,使代码更具表现力。
public function roles() {
return $this->belongsToMany('App\Role');
}
Auth::user()->roles()->first()