winponta / treevel
此包已被废弃,不再维护。未建议替代包。
此包最新版本(0.3.0)没有可用的许可证信息。
一组用于处理Laravel Eloquent模型中树层次结构的类和特质
0.3.0
2017-12-20 19:15 UTC
Requires
- php: >=5.4.0
- laravel/framework: 5.*
README
安装
-
在您的composer.json文件中添加此包,并运行composer install(或直接运行
composer require winponta/treevel
)"winponta/treevel": "0.*"
-
运行copmposer
composer update
使用
使用此包的特质之一使您的模型能够处理树层次结构记录(目前只提供Parent树模型)。
Parent树模型
Parent树模型使用parent id
引用来处理。
特质
<?php
...
class MyModel extends Eloquent {
use \Winponta\Treevel\Traits\ParentTreeModel;
默认属性
父主键(parentIdField)
此属性用于解析父表的主键。如果为null,则使用Eloquent primaryKey模型属性。您可以通过在模型的__constructot
中调用setParentIdField
方法来自定义数据库字段名称来更改此值。
<?php
...
class MyModel extends Eloquent {
use \Winponta\Treevel\Traits\ParentTreeModel;
public function __construct() {
$this->setParentIdField( 'pk_on_parent_table' );
}
父引用(parentField)
包默认使用的字段名称用于处理对父记录的引用值是parent_id
,您可以通过在模型的__constructot
中调用setParentField
方法来自定义数据库字段名称来更改此值。
<?php
...
class MyModel extends Eloquent {
use \Winponta\Treevel\Traits\ParentTreeModel;
public function __construct() {
$this->setParentField( 'my_father_id' );
}
节点级别属性(levelField)
此属性控制节点在树中的深度级别。默认字段值用于处理此功能的是node_level
,您可以通过在模型的__constructot
中调用setLevelField
方法来自定义数据库字段名称来更改此值。
<?php
...
class MyModel extends Eloquent {
use \Winponta\Treevel\Traits\ParentTreeModel;
public function __construct() {
$this->setLevelField( 'depth' );
}
检索树
getTree
以Eloquent Collection的形式从数据库返回完整树
- $options - 一个数组,包含在恢复后代时应用的选择
* where => [key, value] - recover only descendants the key matches the value