我试图通过Auth :: user()函数获取用户角色关系。我以前做过这件事,但由于某种原因它没有用。
Auth::user()->role
这将返回尝试从非对象获取属性的错误。
在我的用户模型中,我有这个:
public function role()
{
return $this->belongsTo('vendor\package\Models\Role');
}
在我的榜样中,我有:
public function user()
{
return $this->hasMany('vendor\package\Models\User');
}
当我这样做时,它会返回我的角色名称,所以我认为我的关系是正确的:
User::whereEmail('test@test.be')->first()->role->name
我错过了什么?
答案 0 :(得分:2)
Auth::user
可以返回非对象。您可以使用Auth::check()
来防止这种情况,甚至Auth::user
本身:
if(!($user = Auth::user())) {
// No user logged in
} else {
$role = $user->role;
}
可替换地:
if(Auth::check()) {
$role = Auth::user()->role;
}
答案 1 :(得分:0)
好的,我发现为什么它不适合我。 问题是我所说的用户模型是我的软件包的一部分,并且因为Laravel在默认的Laravel安装中拥有它自己的用户模型,所以它无法正常工作。
您的包模型不会覆盖现有模型。我通过制作Trait而不是我的包的模型解决了我的问题。