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 安装中有它自己的用户模型,所以它不起作用。

您的包模型没有覆盖已经存在的模型。我通过为我的包制作一个特征而不是一个模型来解决我的问题。