层次树遍历(Laravel/PHP)
Hierarchy Tree Traversal (Laravel/PHP)
我必须获取特定父节点的所有左右节点。这是我的数据库 table 结构。
Schema::create('user', function (Blueprint $table) {
$table->id();
$table->string('code')->unique();
$table->string('parent_code');
$table->enum('position', ['left', 'right', 'root']);
});
$users= User::where('parent_code', $account->code)->where('position', 'left')->get();
$collect = new Collection();
do {
foreach ($users as $item) {
$level = User::where('parent_code', $item->code)->get();
foreach ($level as $lvlitem) {
$collect->push($lvlitem);
}
}
$users = $collect;
} while (!$users->isEmpty());
我试图从我的父节点循环到它的节点,但它似乎越深,花费的时间就越长。
有没有更好的遍历树的方法?
我建议使用已经创建和测试过的包来处理类似的事情。
我也可以为嵌套树推荐这个包:https://github.com/lazychaser/laravel-nestedset
我必须获取特定父节点的所有左右节点。这是我的数据库 table 结构。
Schema::create('user', function (Blueprint $table) {
$table->id();
$table->string('code')->unique();
$table->string('parent_code');
$table->enum('position', ['left', 'right', 'root']);
});
$users= User::where('parent_code', $account->code)->where('position', 'left')->get();
$collect = new Collection();
do {
foreach ($users as $item) {
$level = User::where('parent_code', $item->code)->get();
foreach ($level as $lvlitem) {
$collect->push($lvlitem);
}
}
$users = $collect;
} while (!$users->isEmpty());
我试图从我的父节点循环到它的节点,但它似乎越深,花费的时间就越长。 有没有更好的遍历树的方法?
我建议使用已经创建和测试过的包来处理类似的事情。
我也可以为嵌套树推荐这个包:https://github.com/lazychaser/laravel-nestedset