方法 Illuminate\Auth\SessionGuard::users 在 Laravel 中不存在

Method Illuminate\Auth\SessionGuard::users does not exist in Laravel

我正在尝试附加角色、用户和 users_role 表。尝试连接它们并检查Blade文件,如果用户的角色是admin,他只能访问用户的路由;否则,他无法访问它。对于其他用户,用户的路由一定是看不到的。同时,在 Blade 文件上校验代码会报错。最新的Laravel 8怎么解决这个问题?

app.blade.php

@if(Auth::users()->roles()->where('name', 'Admin')->exists())
    <li class="nav-item">
        <a class="nav-link" href="{{ url('/Admin/users')}}">Users</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url('/Admin/Posts')}}">Posts</a>
    </li>
@else
    <li class="nav-item">
        <a class="nav-link" href="{{ url('/Admin/Posts')}}">Posts</a>
    </li>
@endif

榜样

public function users()
{
    return $this->belongsToMany(User::class, 'users_roles', 'user_id', 'role_id')
        ->using(UserRole::class);
}

用户模型

public function roles()
{
    return $this->belongsToMany(role::class, 'users_roles', 'role_id',
        'user_id')->using(UserRole::class)->withPivot('name');
}

错误

只需替换这个

@if(Auth::users()->roles()->where('name', 'Admin')->exists())

进入

@if(\Auth::user()->roles =='Admin')

希望您能找到解决方案。

在 rakesh 回答的帮助下 和一些修改,错误得到解决.. 所以你可以检查当前用户并检查它的角色然后显示代码如下:

    @if(Auth::check() &&  Auth::user()->roles()->where('name', 'Admin')->exists())

解决了