1. Public function demoList()//演示打印方法
    2. {
    3. $meutList = $this->getMenuList();
    4. echo "<pre>";
    5. print_r($meutList);
    6. echo "<pre>";
    7. die;
    8. }
    9. //----------------------------------
    10. // 获取菜单列表 - 获取全部菜单数据
    11. private function getMenuList()
    12. {
    13. //获取全部菜单列表数组
    14. $menuList = Db::name('system_menu')
    15. ->field('id,pid,title,icon,href,target')
    16. ->where('status', 1)
    17. ->order('sort', 'desc')
    18. ->select();
    19. $menuList = $this->buildMenuChild($menuList);
    20. return $menuList;
    21. }
    22. //创建递去函数方法 - 获取子菜单
    23. private function buildMenuChild($menuList,$pid = 0){
    24. //定义顶级pid为0
    25. $treeList = [];//定义空数组 存放列表
    26. foreach ($menuList as $v) { //数组foreach循环
    27. //pid = 0 筛选出全部顶级分类
    28. if ($pid == $v['pid']) {
    29. $node = $v;//将顶级节点进行保存
    30. //子节点进行递归处理 重新调用函数方法
    31. $child = $this->buildMenuChild($menuList,$v['id']);//参数1不变,传入全部菜单列表,参数2传入子菜单id
    32. if (!empty($child)) {
    33. //子菜单查询到 保存到$node数组中['child']字段
    34. $node['child'] = $child;
    35. }
    36. // todo 后续此处加上用户的权限判断
    37. $treeList[] = $node;//数组 循环添加
    38. }
    39. }
    40. return $treeList;//返回全部菜单数组
    41. }

    wms_system_menu.sql //sql文件