qufo / mptt
modified preorder tree traversal algorithm helper for laravel/lumen
Installs: 5
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/qufo/mptt
Requires
- php: >=5.6.4
- laravel/framework: ~5.3
This package is not auto-updated.
Last update: 2025-10-30 16:35:55 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()
{
//
}
}
License
MIT