1. 云栖社区>
  2. PHP教程>
  3. 正文

数据整合:引用

作者:用户 来源:互联网 时间:2017-11-30 10:29:29

引用数据整合

数据整合:引用 - 摘要: 本文讲的是数据整合:引用,<?phpClass Model{public function department_tree($all=0){ //控制是否只显示有效的数据(剔除被禁用,软删除的数据) if($all===0){ $where = ['statu

<?phpClass Model{
public function department_tree($all=0){
//控制是否只显示有效的数据(剔除被禁用,软删除的数据)
if($all===0){
$where = [
'status'=>1,
];
}
$depart_list = M('department')->where($where)->order('pid ASC')->getField('id,id,name,pid,status');
$quanxian_list = M('position')->where($where)->order('depart ASC')->getField('id,id,name,depart,share,status');
$role_list = M('role')->where($where)->order('depart ASC')->getField('id,id,name,remark,depart,position,status');
$department_tree = $this->depart_position($depart_list, $quanxian_list, $role_list);
S('department_tree', $department_tree, 3*60*60);
return $department_tree;
}
//无限级分类部门对应权限
public function depart_position($list,$position_list=[],$role_list=[],$parent_node = 'pid',$children_node = 'children',$no_root = 1,$root_pid = 0, $return_type='first'){
$return_list = [];
//将当前所遍历到的部门,根据pid 被引用 放入到 上一级部门的children字段里面,键名是部门id
//先将数组,根据父节点 进行引用操作
foreach($list as $key=>$value){
if( isset($list[$value[$parent_node]]) ){
$list[$value[$parent_node]][$children_node][$key] = &$list[$key];
}else{
//没有父节点节点,默认他是根节点
if($no_root){
$list[$key]['root'] = 1;
}
}
}
//遍历职位数组,将职位放入对应的部门的position字段里面
foreach($position_list as $k=>$v) {
if(isset($list[$v['depart']])){
$list[$v['depart']]['position'][$k] = &$position_list[$k];
}
}
//遍历 角色权限 数组,将角色权限 放入 对应的部门的role字段里面
foreach($role_list as $k=>$v) {
if(isset($list[$v['depart']])){
$list[$v['depart']]['role'][$k] = &$role_list[$k];
}
}

//遍历部门数组
foreach($list as $key=>$value){
if( isset($list[$value[$parent_node]]) ){
//遍历当前部门的上一级部门 的职位列表
foreach($list[$value[$parent_node]]['position'] as $k=>$v){
//默认给职位列表设置空数组
isset($list[$key]['position'])?:$list[$key]['position'] = [];
//如果上一级部门的该职位是子部门共享
if($v['share']==2){
//那么将该职位(上一级部门的职位)放入本部门的职位列表中
$list[$key]['position'][$k] = $v;
//同时,遍历 角色权限 数组
foreach($role_list as $jk=>$jv) {
isset($list[$key]['role'])?:$list[$key]['role'] = [];
//将该职位所对应的角色权限,放入当前部门的role字段中
if ($jv['position'] == $v['id']) {
$list[$key]['role'][$k] = $jv;
}
}
}else{
continue;
}
}
}else{
//没有父节点节点,默认他是根节点
if($no_root){
$list[$key]['root'] = 1;
}
}
}
if($return_type == 'first'){
return $list;
}else{
foreach($list as $key=>$value){
if($no_root){
if($value['root'] == 1){
$return_list[$key] = $list[$key];
}
}else{
if($value[$parent_node] == $root_pid){
$return_list[$key] = $list[$key];
}
}
}
unset($list);
return $return_list;
}
}
}

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索引用 , 数据 整合 ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备