2017-01-30 6 views
1

модели пользователя:Неопределенное свойство в модели

class User extends Authenticatable 
{ 
    use Notifiable; 

    protected $table = 'users'; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 'role_id', 
    ]; 

    protected $appends = [ 
     'role', 
    ]; 

    public function getRoleAttribute() 
    { 
     return $this->role->name; 
    } 

    /** 
    * User role. 
    * 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function role() 
    { 
     return $this->belongsTo('App\Role'); 
    } 
} 

Я wan't, чтобы показать имя роли вместо роли идентификатора.

Но он говорит:

ErrorException в User.php линии 38: Не определено свойство: App \ User :: $ роль

Таблица ролей содержит идентификатор и имя

Таблица пользователей содержит Роль_ид

Edit:

Когда я пытаюсь return $this->role()->name; это дает мне:

ErrorException в User.php линии 38: Не определено свойство: загоритесь \ Database \ Eloquent \ Отношения \ BelongsTo :: $ имя

Но я проверить роль и что работает ...

/** 
* Check if the user is an admin. 
* 
* @return bool 
*/ 
public function isAdmin() 
{ 
    if ($this->role->name == 'admin') { 
     return true; 
    } 

    return false; 
} 

ответ

0

Это потому, что вы роль атрибут и роль отношения, попробуйте переименовать одну из них, и он будет работать с return $this->role->name;

+1

Ничего себе ты лучший, я получил смысл .. Спасибо – yooouuri

+0

Спасибо вам :) –

0

Используйте отношения, не про Perty:

{{ $user->role()->name }} 
+0

Undefined собственности: Осветить \ Database \ Eloquent \ Отношения \ BelongsTo :: $ name – yooouuri