php - Laravel 找出角色中选择了哪些权限
问题描述
在我的网络应用程序中,我有两个表role
,并且我可以将每个表与表permission
同步permission
role
我想找出哪些权限在角色的权限中,因为选择然后进入视图,例如我有 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
解决方案
这段代码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>
@endforeach
推荐阅读
- node.js - Node.js:在 Windows 上读取 ECONNRESET
- javascript - ASP.net Core MVC:如何修复循环结果?
- android - 在单个活动中膨胀多个菜单
- python - Python 'hhmmss' 时间计算
- node.js - 使用 ms 团队聊天机器人将消息发送到个人聊天而不是群聊
- datagrid - 设置“view”属性时,如何防止 jquery easyui scrollview 扩展崩溃?
- boolean - Minizinc 中的“和”、“或”运算符?
- java - Java-PDFbox:为标记的 PDF 中的线条和下划线创建工件标记
- javascript - 我试图在对象中传递一个函数,但每次运行代码时,它都会返回“[Function:property]”
- c++ - 无法在开发 C++ 编译器中使用 unordered_map