这个需要用程序递归处理
$dept_tree=[]$deptid = 19
while($deptid>0){
//假设你的数据库查询是这个函数,根据条件直接查询一条记录返回
$dept = getone('department',['id'=>$deptid])
//防止数据丢失出错
if(empty($dept))break
array_unshift($dept_tree,$dept)
$deptid = $dept['dep_parentid']
//如果需要防止数据错乱出现递归,这里可以判断一下
if(in_array($deptid,array_column($dept_tree,'id') !== false){
//说明职位关系乱了,有死循环
break
}
}
可以把这段代码封装成一个函数使用。这里就不论从哪一级开始查询了,总是能把该职位及其上级全部查询出来,按顺序放进数组里
$dept_tree 类似这样
array(0=>array(
'id'=>1,
'dep_parentid'=>0,
'dep_name'=>'顶级',
),
1=>array(
'id'=>2,
'dep_parentid'=>1,
'dep_name'=>'国灿金融',
),
2=>array(
'id'=>4,
'dep_parentid'=>2,
'dep_name'=>'招聘部',
),
3=>array(
'id'=>19,
'dep_parentid'=>4,
'dep_name'=>'经理助理',
),
)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)