Laravel 中不存在方法 Illuminate\Auth\SessionGuard::users
Posted
技术标签:
【中文标题】Laravel 中不存在方法 Illuminate\\Auth\\SessionGuard::users【英文标题】:Method Illuminate\Auth\SessionGuard::users does not exist in LaravelLaravel 中不存在方法 Illuminate\Auth\SessionGuard::users 【发布时间】:2021-09-11 09:39:14 【问题描述】:我正在尝试附加角色、用户和 users_role 表。尝试连接它们并检查 Blade 文件,如果用户的角色是管理员,他只能访问用户的路由;否则,他无法访问它。对于其他用户,不能看到用户的路线。同时,验证 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');
错误
【问题讨论】:
@Rakesh Kumar Oad 你知道如何解决这个错误 是的,我已经解决了。 【参考方案1】:在 rakesh 的帮助下回答 https://***.com/a/68176136/16114539 和一些修改,错误得到了解决.. 因此您可以检查当前用户并检查它的角色,然后显示代码如下:
@if(Auth::check() && Auth::user()->roles()->where('name', 'Admin')->exists())
解决了
【讨论】:
【参考方案2】:简单地替换这个
@if(Auth::users()->roles()->where('name', 'Admin')->exists())
进入
@if(\Auth::user()->roles =='Admin')
我希望你得到你的解决方案。
【讨论】:
对不起,你做了什么..无法理解..这是我检查角色的查询吗??? 现在我已经更新了我的答案,如果您有任何问题,请告诉我 @Rkesh Kumar Oad ?? 仍然没有得到相同的错误结果...我们可以使用 user 而不是 users ,但得到另一个错误 更新代码后出现新错误:---- 试图获取非对象的属性“角色”(查看:C:\xampp\htdocs\lara-media\resources\views\layouts \app.blade.php)以上是关于Laravel 中不存在方法 Illuminate\Auth\SessionGuard::users的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8:方法 Illuminate\Database\Eloquent\Collection::latest 不存在
Laravel - 测试 api 时方法 Illuminate\Auth\RequestGuard::attempt 不存在
方法 Illuminate\Auth\RequestGuard::logout 不存在 Laravel Passport
方法 Illuminate\Auth\RequestGuard::attempt 不存在