12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- namespace catchAdmin\permissions\model\search;
- use catchAdmin\permissions\model\Roles;
- use think\facade\Db;
- trait PermissionsSearch
- {
- public function searchPermissionNameAttr($query, $value, $data)
- {
- return $query->whereLike('permission_name', $value);
- }
- public function searchIdAttr($query, $value, $data)
- {
- $query->where('parent_id', $value)->whereOr('id', $value);
- }
- public function searchRoleIdAttr($query, $value, $data)
- {
- $permissionIds = [];
- $permissions = Roles::where('id', $value)->find()->getPermissions();
- foreach ($permissions as $_permission) {
- $permissionIds[] = $_permission->pivot->permission_id;
- }
-
- if(!empty($permissionIds)) {
- $query->whereIn('id', $permissionIds);
- }
- }
- public function searchUidAttr($query, $value, $data)
- {
- if ($value == 1) {
- return $query;
- }
- // 查出用户拥有的角色
- $roleIds = Db::table('user_has_roles')->where('uid', $value)->column('role_id');
- // 查出角色拥有的权限
- $permissionIds = Db::table('role_has_permissions')->whereIn('role_id', $roleIds)->column('permission_id');
- if(!empty($permissionIds)) {
- $query->whereIn('id', $permissionIds);
- }
- }
- }
|