thinkphp使用递归创建树形菜单

1. 创建数据库表:创建一个数据库表来存储菜单数据。该表至少需要包含以下字段:id(主键)、name(菜单名称)、pid(父级菜单ID)。你可以根据业务需求添加其他字段。

success方法返回成功响应结果。
// MenuList方法是一个递归方法,用于获取指定父级ID下的菜单数据并处理为树形结构。方法的参数$pid表示当前父级ID,默认为0,即顶级菜单。
// 在方法内部,首先通过db('grade')->where('pid', $pid)->select()查询数据库中指定父级ID的菜单数据
// 然后,通过循环遍历菜单数据,逐个处理每个菜单项。如果当前菜单项存在子菜单(即$children数组不为空),则将子菜单赋值给menu['children'];否则,将空数组赋值给menu['children']。
// 最后,将处理后的菜单项添加到result数组中,并返回result数组中,并返回result作为最终的菜单数据。
    public function index()
    {
        if(request()->isPost()){
            $menus = $this->MenuList();
            $this->success('请求成功',$menus);
        }
    }
    /**
     * 递归树形菜单
     */
     public function MenuList($pid=0)
     {
            $menus = db('grade')->where('pid',$pid)->select();
            $result = [];
            foreach ($menus as $menu){
                $children = $this->MenuList($menu['id']);
                if(!empty($children)){
                    $menu['children'] = $children;
                }else{
                    $menu['children'] = [];
                }
                $result[] = $menu;
            }
            return $result; 
     }
}

通过以上步骤,就可以创建递归属性菜单了。可以根据你的具体业务需求进行相应的修改和扩展。

你可能感兴趣的:(数据库,php)