部门表department
字段:id,parent_id(所属上级部门id),name(部门名称),leavel(部门层级,比如最上级的部门为1,他下面的部门为2,以此类推)
查找部门(部门id)A的所有子部门
实现:
1、先查找到部门A的信息取得A部门的层级假设为B
select * from department where id = 'A';
2、查找出层级大于B的所有部门,并且根据leavel顺序排列(根据leavel排序后能保证一次foreach循环就能取得所有下级菜单)
select * from department where leavel >B order by leavel asc
3、设置2获取到的信息为变量$result,如下代码取得的下级部门id数组为$lastClassArr
$class = 4;//设置该值为A部门的id
$lastClassArr = [$class];//下级部门id数组
foreach($result as $key => $value){
if(in_array($value['parent_id'],$lastClassArr)){
$lastClassArr[] = $value['id'];
}
}