Laravel Auth :: user()关系

时间:2015-03-11 15:37:56

标签: php authentication laravel eloquent

我试图通过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

我错过了什么?

2 个答案:

答案 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而不是我的包的模型解决了我的问题。