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 }}
我有一个用户模型,在模型中我有一个名为 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 }}