无限级分类,无限级菜单显示,预加载导致未授权的也显示出来
使用ORM预加载进行无限级树状,对于不需要权限控制的菜单显示,列表显示完全没问题
那我的菜单假如根据授予的权限控制的,子递归里面没办法去除不在权限内的
class role {
....
public function getTreePermission()
{
// $this->permissions()定义了一个多对多的关系
return $this->permissions()->with('childrenPermissions')
->whereNull('pid')
->orderBy('weight', 'desc')
->getResults();
}
}
class Permission {
....
public function children()
{
return $this->hasMany(config('permission.models.permission'), 'pid', 'id');
}
public function childrenPermissions()
{
return $this->children()->with('childrenPermissions')->orderBy('weight', 'desc');
}
}
我的rbac里节点,id为4和7的权限都没有分配给role,但是仍然显示出来了
{
"status": 0,
"message": "Success",
"data": [
{
"id": 1,
"name": "permission",
"display_name": "权限管理",
"pid": null,
"weight": 0,
"is_menu": 1,
"children_permissions": [
{
"id": 3,
"name": "permission.user",
"display_name": "用户管理",
"pid": 1,
"weight": 0,
"is_menu": 1,
"children_permissions": [
{
"id": 7,
"name": "permission.user.edit",
"display_name": "编辑用户",
"pid": 3,
"weight": 2,
"is_menu": 0,
"children_permissions": []
},
{
"id": 6,
"name": "permission.user.view",
"display_name": "查看用户列表",
"pid": 3,
"weight": 1,
"is_menu": 0,
"children_permissions": []
}
]
},
{
"id": 4,
"name": "permission.role",
"display_name": "角色管理",
"pid": 1,
"weight": 0,
"is_menu": 1,
"children_permissions": []
}
]
}
]
}
该怎么处理,求指导!!
推荐文章: