Download the PHP package gmars/tp5-nestedsets without Composer
On this page you can find all versions of the php package gmars/tp5-nestedsets. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download gmars/tp5-nestedsets
More information about gmars/tp5-nestedsets
Files in gmars/tp5-nestedsets
Package tp5-nestedsets
Short Description 此扩展是thinkPHP5的nestendsets的扩展。能够方便的在项目中来管理有层级关系的数据结构。该扩展在算法上部分参考了Willfred di Vampo的nestedsets,实现了数据的插入,移动,删除,遍历等功能。
License MIT
Informations about the package tp5-nestedsets
新包发布
地址: https://github.com/gmars/infinite-tree 特性: 不依赖于特定的PHP框架,使用更便捷
tp5-nestedsets
本扩展包是tp5的nestedsets包,使用了部分tp5的特性实现了关系型数据库中特殊数据结构的处理。
安装方法
先安装composer如果不知道怎么安装使用composer请自行百度。 打开命令行工具切换到你的tp5项目根目录
如果该方法报错请按照以下方式操作:
- 打开项目根目录下的composer.json
- 在require中添加"gmars/tp5-nestedsets": "dev-master"
- 运行composer update
添加后composer.json应该有这样的部分:
获取nestedsets实例
结合模型使用
一般使用nestedsets是结合模型使用的,但是此扩展中并没有使用tp5中模型的特性进行增删改查,那样的话让我们的扩展包会显得更为厚重。但是模型的特性在我们的使用中是有必要的。
在项目中需要配置的参数和你的数据表字段对应就行:
/**
* @var string 左键
*/
private $leftKey = "left_key";
/**
* @var string 右键
*/
private $rightKey = "right_key";
/**
* @var string 父亲字段
*/
private $parentKey = "parent_id";
/**
* @var string 节点深度
*/
private $levelKey = "level";
/**
* @var string 主键
*/
private $primaryKey = "id";
我的数据表结构为:
在模型中配置nestedsets并使用:
在模型中配置的方式为在模型中定义一个public $nestedConfig属性。注意,名称必须是nestedConfig
例如:
然后就可以实例化使用了
这样就实例化了一个nestedsets对象,紧接着就可以调用其中的方法进行使用了。
实例化时传入配置参数:
其实上边直接配置已经很方便了。但是你不想在模型中配置该参数也可以在实例化时传入配置,例如:
这种方式也是允许的,但是如果模型中的配置和直接传参都使用时模型中配置的参数不会生效只生效实例化时传入的参数。
原生配置使用
这种方式是考虑如果你存在的表没有必要创建模型时的使用。
这时候就没有模型供我们使用,所以实例化时第一个参数为表名,例如:
需要注意的是,传入的表名必须是完整表名。这种方式如果要对字段配置只能在实例化时传入参数。
在项目中使用nestedsets
如果你要创建一个节点:
parentId是要创建节点的父亲节点。
data是数据表中其他的字段例如名称、描述信息等,必须是数组
insert方法的本来形式如下:
删除节点
删除节点会删除该节点下的所有后代节点,这个在逻辑上来说是合理的。
移动某一个节点成为另一个的子节点
移动一个节点成为另一个节点的子节点的操作在实际使用中使用比较广泛
移动某一个节点到另一个节点的前或者后
这种操作多见于改变节点的顺序上实用性也非常强
该方法的原型为:
可能有人会疑惑该扩展为何没有修改节点的方法。其实这不是nestedsets该做的事情。对于节点的修改在数据结构的层面来讲就是节点位置的移动。至于数据表中其他字段的修改,例如name,description等则使用框架给我们提供的字段修改的方法要更加方便。