最终效果图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201208164905478.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE5NTk4OTYz,size_16,color_FFFFFF,t_70)
Model
<?php
namespace app\admin\model;
use think\Db;
use think\facade\Request;
class EdmMenu extends Base
{
protected $name = 'edm_menu';
static $treeList = [];
public function getAllChildTreeMenusList()
{
$datas = self::select()->toArray();
$datas = self::columnTree($datas);
foreach ($datas as &$row){
$row['name'] = str_repeat("├─",$row['count']).$row['name'] ;
}
return $datas;
}
private static function columnTree(&$data,$pid = 0,$count = 1){
foreach ($data as $key => $value){
if($value['parent_id']==$pid){
$value['count'] = $count;
self::$treeList []=$value;
unset($data[$key]);
self::columnTree($data,$value['id'],$count+1);
}
}
return self::$treeList ;
}
}
Controller
<?php
namespace app\admin\controller;
use app\admin\controller\master\Common;
use app\admin\libs\traits\AdminCrud;
use app\admin\model\EdmMenu;
class Edm extends Common
{
use AdminCrud;
public function initialize()
{
parent::initialize();
$this->model = new \app\admin\model\Edm();
}
public function add()
{
$edmMenus = new EdmMenu();
$menus = $edmMenus->getAllChildTreeMenusList();
$this->assign(compact('menus'));
return $this->fetch();
}
}
前端代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020120816521810.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE5NTk4OTYz,size_16,color_FFFFFF,t_70)
数据库 结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201208165335797.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE5NTk4OTYz,size_16,color_FFFFFF,t_70)
原始结构
![](https://img-blog.csdnimg.cn/20201208165105772.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE5NTk4OTYz,size_16,color_FFFFFF,t_70)
效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201208165149617.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzE5NTk4OTYz,size_16,color_FFFFFF,t_70)