Laravel Auth::user() 关系
Laravel Auth::user() relationships
我正在尝试通过 Auth::user() 函数获取我的用户角色关系。我以前这样做过,但由于某种原因它不起作用。
Auth::user()->role
这个 returns 试图从非对象中获取 属性 的错误。
在我的用户模型中我有这个:
public function role()
{
return $this->belongsTo('vendor\package\Models\Role');
}
我的榜样有:
public function user()
{
return $this->hasMany('vendor\package\Models\User');
}
当我这样做时 returns 我的角色名称,所以我认为我的关系是正确的:
User::whereEmail('test@test.be')->first()->role->name
我错过了什么?
当没有用户登录时,Auth::user
可以 return 一个非对象。你可以使用 Auth::check()
来防止这种情况,甚至 Auth::user
本身:
if(!($user = Auth::user())) {
// No user logged in
} else {
$role = $user->role;
}
或者:
if(Auth::check()) {
$role = Auth::user()->role;
}
好的,我发现了为什么它对我不起作用。
问题是我所说的用户模型是我的包的一部分,因为 Laravel 在默认 Laravel 安装中有它自己的用户模型,所以它不起作用。
您的包模型没有覆盖已经存在的模型。我通过为我的包制作一个特征而不是一个模型来解决我的问题。
我正在尝试通过 Auth::user() 函数获取我的用户角色关系。我以前这样做过,但由于某种原因它不起作用。
Auth::user()->role
这个 returns 试图从非对象中获取 属性 的错误。
在我的用户模型中我有这个:
public function role()
{
return $this->belongsTo('vendor\package\Models\Role');
}
我的榜样有:
public function user()
{
return $this->hasMany('vendor\package\Models\User');
}
当我这样做时 returns 我的角色名称,所以我认为我的关系是正确的:
User::whereEmail('test@test.be')->first()->role->name
我错过了什么?
Auth::user
可以 return 一个非对象。你可以使用 Auth::check()
来防止这种情况,甚至 Auth::user
本身:
if(!($user = Auth::user())) {
// No user logged in
} else {
$role = $user->role;
}
或者:
if(Auth::check()) {
$role = Auth::user()->role;
}
好的,我发现了为什么它对我不起作用。 问题是我所说的用户模型是我的包的一部分,因为 Laravel 在默认 Laravel 安装中有它自己的用户模型,所以它不起作用。
您的包模型没有覆盖已经存在的模型。我通过为我的包制作一个特征而不是一个模型来解决我的问题。