【问题标题】: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 你知道如何解决这个错误
  • 是的,我已经解决了。

标签: laravel eloquent pivot-table laravel-8


【解决方案1】:

在 rakesh 的帮助下回答 https://stackoverflow.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)
    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 2019-12-05
    • 2021-07-04
    • 2020-01-13
    • 2020-01-08
    • 2018-08-08
    • 2019-12-21
    • 2019-09-13
    相关资源
    最近更新 更多