Laravel关系不起作用但外键具有值

时间:2018-06-10 21:27:35

标签: php relationships laravel-5.6

我有一个用户模型,在模型中我有一个名为role_id的整数字段。如果我回显该值{{ $user->role_id }}我得到一个数字,我也在用户模型上建立了与角色模型的关系,但是如果我尝试做{{ $user->role()->role_name }}我得到以下错误:< / p>

Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$role_name 

如果我使用代码{!! \App\Models\Role::whereKey($user->role_id)->pluck('role_name') !!},我会正确获取值,因此它与我无法看到它的关系有关。

用户模型

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

角色模型

class Role extends Model

{     使用SoftDeletes;

public $table = 'roles';

const CREATED_AT = null;
const UPDATED_AT = null;


protected $dates = ['deleted_at'];


public $fillable = [
    'role_name'
];

/**
 * The attributes that should be casted to native types.
 *
 * @var array
 */
protected $casts = [
    'id' => 'integer',
    'role_name' => 'string'
];

/**
 * Validation rules
 *
 * @var array
 */
public static $rules = [

];

public function users(){
    return $this->belongsTo('App\Models\User');
}

1 个答案:

答案 0 :(得分:1)

您应该使用魔法属性$role而不是关系定义方法role()。试试这个:

{{ $user->role->role_name }}