利用NestedSets实现无限级分类

数据表中必须设置left,right,parent_id,level等字段,名字不一定相同。

NestedSets.php就是这个类,可以放到框架中的第三方类或者工具类中,便于调用。

DbMysqlModel.php是数据库的接口类,便于解析NestedSets.php中的数据库语句操作。

DBMysqlImplModel.php是DbMysqlModel.php的实现类。

DbMysqlModel.php和DBMysqlImplModel.php一般放到框架的数据模型所在的文件夹

使用时,注意修改这三个文件的命名空间,以及修改DBMysqlImplModel.php这个实现类,改成你自己的数据库的实现。

下面给出增加和删除节点的代码例子,仅供参考:

增加节点:
  $db = new db();  //获取你的数据库操作模型
  $DBMysqlImplModel = new DBMysqlImplModel($db); //获取数据库实现类
  $nestedsets = new nestedsets($DBMysqlImplModel,'表名','left','right','parent_id','id','level');        
  $data['name'] = '测试菜单';    //增加菜单的项,name对应数据表里的字段
  $parent_id = 1;    //增加到哪个菜单下
  $nestedsets->insert($parent_id,$data,'bottom');
删除节点:
  $nestedsets->delete($id);

执行操作后,程序会自动设置left,right的值。

获取指定节点的子节点

  $nestedsets->getChilds($id);

下载:https://yunpan.cn/cBkmNNtNcCQPB (提取码:82e9)

发表评论

邮箱地址不会被公开。 必填项已用*标注