在我的web应用程序中,我有两个表role和permission,我可以将每个permission与role表同步
我想找出哪些权限在角色的权限中,因为选择了then in视图,例如我有10个权限,其中四个项目与role表同步,我想找出它们
$role = Role::with('permission')->whereId($id)->first();
$permissions = Permission::all();
dd($role,$role->permission());输出为:
App\Entities\Role {#1816 ▼
...
#relations: array:1 [▼
"permission" => Illuminate\Database\Eloquent\Collection {#1814 ▼
#items: array:2 [▼
0 => App\Entities\Permission {#1829 ▼
...
#attributes: array:5 [▼
"id" => 4
"name" => "create-comment"
"label" => "user can create a comment"
...
]
...
}
1 => App\Entities\Permission {#1826 ▶}
]
}
]
...
}
Illuminate\Database\Eloquent\Collection {#1812 ▼
#items: array:3 [▼
0 => App\Entities\Permission {#1820 ▼
...
#attributes: array:5 [▼
"id" => 4
"name" => "create-comment"
"label" => "user can create a comment"
...
]
...
}
1 => App\Entities\Permission {#1828 ▶}
2 => App\Entities\Permission {#1827 ▶}
]
}你可以看到"create-comment"权限在角色的权限中,我怎么才能找到它们呢?
例如:
$role = Role::with('permission')->whereId($id)->first();
$permissions = Permission::get();
dd($role->hasPermission($permissions));
class Role extends Model
{
...
public function hasPermission($permission)
{
//return which permissions are in role
}
}或者使用contains
@foreach($permissions as $permission)
<option value="{{$permission->id}}" @if($role->permission->contains('id',$permission->id)) selected="selected" @else '' @endif>
{{$permission->name}} {{$permission->label}}
</option>
@endforeach发布于 2020-10-22 00:12:36
下面这段Blade代码解决了我的问题:
@foreach($permissions as $permission)
<option value="{{$permission->id}}" @if($role->permission->contains('id',$permission->id)) selected="selected" @else '' @endif>
{{$permission->name}} <span class="text-danger">({{$permission->label}})</span>
</option>
@endforeachhttps://stackoverflow.com/questions/64467311
复制相似问题