如何使用 laravel spatie 包检查 if 语句中的多个权限条件?

jou*_*oun 1 if-statement laravel-5 laravel-permission

我需要检查 if 语句中的条件以获得多个权限。它使用 laravel 的 spatie 包。我使用下面的代码,但它似乎不起作用。可以显示输出,但输出不正确。它不会过滤条件。

if (auth()->user()->can('View Consultant') || auth()->user()('View Administration') 
|| auth()->user()('View Accountant') || auth()->user()('All departments')) 
 {

        $itemregistrations = DB::table('itemregistrations')
                             ->where('categoryid','=', '1',',','2',',','3')
                             ->get();

        return view('profil.index', compact('itemregistrations'));

 } 
Run Code Online (Sandbox Code Playgroud)

代码是否正确?

条件是有权限的用户(查看顾问、查看行政、查看会计、所有部门)可以查看所有部门的顾问、行政、会计列表。

有权限的用户(仅查看顾问)只能查看顾问列表。

top*_*her 7

@canBlade 指令接受权限数组,结果与->hasAllPermissions

@can(['user create', 'user edit'])
    ...
@endcan
Run Code Online (Sandbox Code Playgroud)

还有另一个名为 的 Blade 指令@canany,结果与->hasAnyPermission

@canany(['user create', 'user edit'])
    ...
@endcanany
Run Code Online (Sandbox Code Playgroud)

在这些版本上进行了测试:

laravel/framework 8.83.5
spatie/laravel-permission 3.18.0
Run Code Online (Sandbox Code Playgroud)