Laravel 关系无效但外键有值

Laravel relationship not working but foreign key has a value

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

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

{ 使用软删除;

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

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

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