Laravel 5 检查管理中间件逻辑是否不正确(一对多角色)

Laravel 5 checkif Admin middleware logic not correct (one to many with role)

我正在构建一个 Laravel 5 REST-webapp。现在我想添加一个 Admi。我通过设置一对多关系来做到这一点(用户可以有 1 个角色,1 个角色可以有很多用户)table 像这样:

public function role()
{
    return $this->hasOne(Role::class);
}

这行得通,我有一个 role_id 的用户。 但现在我一直在编写中间件并正确使用它 role_id。

现在,我的管理中间件是

public function handle($request,  Closure $next, $guard = null)
{
    if (Auth::User()->isRole('Admin')) {
        return $next($request);
    }
    return redirect()->guest('login');
}

在我的用户模型中我有:

public function isRole($roleName)
{

    if ($this->with('role') == $roleName)
    {
        print_r($this->with('role.name'));
    }

    return false;
}

但是这段代码只是把我送到主页。

我的中间件逻辑错误(其他所有设置都正确)。

亲切的问候

您可能应该更改:

public function isRole($roleName)
{

    if ($this->with('role') == $roleName)
    {
        print_r($this->with('role.name'));
    }

    return false;
}

进入:

public function isRole($roleName)
{
    return $this->role->name == $roleName;
}

让它发挥作用

编辑

你也应该改变你的关系:

public function role()
{
    return $this->hasOne(Role::class);
}

进入

public function role()
{
    return $this->belongsTo(Role::class);
}

假设您在 users table

中有 role_id