Laravel – Eloquent return only one value

Como posso retornar um valor de uma relação de Parecido demais.

Esta é a minha relação:

public function role() { return $this->belongsToMany('App\Role'); } 

Agora, quando eu quero acessar o Nome do Papel, devo fazer o seguinte:

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

Mas eu só quero fazer

 Auth::user()->role 

Mas agora minha pergunta é: “Como posso fazer isso?”

Para fazer isso, você precisa adicionar um atributo personalizado ao modelo de usuário como o seguinte:

Modelo do Usuário:

 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'); } 

agora você pode usar

 Auth::user()->role 
 Auth::user()->role()->first() 

Além da questão em si, sugiro que você use o nome do plural para belogsToMany relações: é uma prática recomendada comum e torna o código muito mais expressivo.

 public function roles() { return $this->belongsToMany('App\Role'); } Auth::user()->roles()->first()