twocoffeecups / lara-adjacency-list
适用于laravel的轻量级邻接表。
0.2.2.0
2024-03-25 13:14 UTC
Requires
- php: ^8.0
This package is auto-updated.
Last update: 2024-09-26 11:08:58 UTC
README
用于与laravel的邻接列表一起工作的简单插件。
开发中。
兼容性
Laravel 8.x + 版本。
安装
安装包
composer require twocoffeecups/lara-adjacency-list
在您的模型中使用HasAdjacencyList特质
use TwoCoffeeCups\LaraAdjacencyList\AdjacencyList\HasAdjacencyList;
class YourModel extends Model
{
use HasAdjacencyList;
}
在您的表模式中添加列
Schema::create('your_table_name', function (Blueprint $table) {
$table->id();
$table->foreignId('parentId')->nullable()->index('parentIdx')->constrained('your_table_name');
});
或者如果您已经在数据库中有一个表,并且输入表名,则运行此命令
php artisan adjacency-list:add-parent-id
使用方法
键
如果您已经有一个包含父键和本地键的表,那么您可以在模型中重新定义它们的名称
use TwoCoffeeCups\LaraAdjacencyList\AdjacencyList\HasAdjacencyList;
class YourModel extends Model
{
use HasAdjacencyList;
public function getLocalIdName(): string
{
return 'your_local_id_name';
}
public function getParentIdName(): string
{
return 'your_parent_id_name';
}
}
关系
特质有多种关系
children()
获取仅子节点。parent()
获取父节点。allAncestors()
获取祖先列表。allAncestorsAndMe()
获取祖先列表,包括自身。allDescendants()
获取后代列表。allAncestorsAndMe()
获取祖先列表,包括自身。
方法使用
$node = Model::find($id);
$node->allAncestors();
树
静态方法getTree()
允许您从根元素获取所有元素的树。
$tree = Model::getTree();
使用方法descendantsTree()
来创建所有后代的树。
$tree = $model->descendantsTree()->get();
静态方法onlyRoots()
允许您仅获取根元素。
$roots = Model::onlyRoots();