php - plantillas - Laravel-Eloquent devuelve solo un valor
laravel foreach index (2)
¿Cómo puedo devolver un valor de una relación de belongsToMany?
Esta es mi relación:
public function role() {
return $this->belongsToMany(''App/Role'');
}
Ahora cuando quiero acceder al Nombre de la función, tengo que hacer lo siguiente:
Auth::user()->role[0]->name
Pero solo quiero hacer
Auth::user()->role
Pero ahora mi pregunta es: "¿Cómo puedo hacer eso?"
para hacer esto, necesita agregar un atributo personalizado al modelo de usuario de la siguiente manera:
Modelo de usuario:
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'');
}
ahora puedes usar
Auth::user()->role
Auth::user()->role()->first()
Además de la pregunta en sí, te sugiero que uses el nombre plural para las relaciones de belogsToMany: es una práctica recomendada común y hace que el código sea mucho más expresivo.
public function roles() {
return $this->belongsToMany(''App/Role'');
}
Auth::user()->roles()->first()