Laravel - Eloquent只返回一个值

时间:2017-05-19 12:44:56

标签: php laravel eloquent

如何从belongsToMany关系中返回一个值。

这是我的关系:

public function role() {

    return $this->belongsToMany('App\Role');

}

现在,当我想访问角色名称时,我必须执行以下操作:

Auth::user()->role[0]->name 

但我只想做

Auth::user()->role

但现在我的问题是:"我该怎么做?"

2 个答案:

答案 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()