qufo / mptt
用于 Laravel/lumen 的修改后的前序树遍历算法辅助工具
dev-master
2018-05-22 01:10 UTC
Requires
- php: >=5.6.4
- laravel/framework: ~5.3
This package is not auto-updated.
Last update: 2024-09-19 11:17:51 UTC
README
预排序遍历树算法 (modified preorder tree traversal algorithm) 的 Laravel / lumen 实现。
假设使用的模型名为 Tree ,对应表应至少包含下列字段,字段类型建议为无符号整数。
id作为主键pid为父级的id,在MPTT算法中非必须,但这个扩展中必须有。lft为左值。rgt为右值。lvl为层级,在MPTT算法中非必须,但这个扩展中必须有。
其他如 name , title 等字段可自行添加,可以使用 created_at , updated_at ,不使用软删除 deleted_at。
观察者监听创建(即新增节点)created 和删除 deleting 事件,自动维护其左右值,层级等。
trit 提供以下模型方法
ChildCount返回其子孙数量,不包含当前节点本身,包含其下所有节点总数量。SonCount返回其子代数量,不包含当前节点,仅有下一级节点数量。Path返回从根节点到当前节点的路径(不包含根节点),注意其lvl表示对应层级。
安装
使用 composer 安装,执行如下命令:
composer require qufo/mptt
使用方法
- 在模型文件中,引入
MPTTModeltrait 。形如
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Qufo\MPTT\MPTTModel;
class Tree extends Model
{
use MPTTModel;
}
- 在
App\Providers\AppServiceProvider的boot方法中注册观察者:
<?php
namespace App\Providers;
use App\Tree;
use Illuminate\Support\ServiceProvider;
use Qufo\MPTT\MPTTObserver;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Tree::observe(MPTTObserver::class);
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
许可证
MIT