无限极分类怎么获取某个分类下的所有文章?

分类表:
id department pid level
1 行政部 14 1
2 市场部 14 1
3 财务部 14 1
4 外贸部 14 1
5 总经办 14 1
6 投标部 14 1
7 工程部 14 1
8 研发部 14 1
9 销售部 14 1
10 内销部 14 1
11 华南区 10 2
12 华北区 10 2
13 华东区 10 2
14 广州 0 0
15 广东 0 0
16 样板部 15 1
数据表
id name phone weixin qq email did(关联的分类ID)
1 张三 10086 test 10000 10000@qq.com 1
2 李四 13800138000 test1 123456 123456@qq.com 2
3 小明 13888888888 test23 987654 98654@qq.com 11

如$id = 14
public function selectRosterList($id)
    {
        $data = db('department')->where('pid',$id)->select();
        $rosters = [];
        foreach ($data as $key=>$value){
            $roster = db('roster')->where('did',$value['id'])->select();
            $rosters = array_merge($rosters, $roster);
            if ($value['pid'] != 0){
                $this->selectRosterList($value['id']);
            }
        }
        return $rosters;
    }

为什么我这样写只能得到张三和李四的数据,却得不到小明的数据?

阅读 2.6k
2 个回答

思路:
1、先递归出指定分类的所有子分类
2、根据子分类的id查询

$rosters = []; 每次递归,你这个都会初始化
不要把递归部门和查询人员放在一起,递归只用来查找这个部门下的所有子部门,递归出来一个部门数组,然后再查询部门ID在这些数组的人员

你每次执行的时候 id都会被赋值成14

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题