方法 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())
解决了
我正在尝试附加角色、用户和 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())
解决了