PHPackages                             on1kel/hyperf-nestedset - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. on1kel/hyperf-nestedset

ActiveLibrary[Database &amp; ORM](/categories/database)

on1kel/hyperf-nestedset
=======================

Multi-Treeструктуры для Hyperf (реализация модели вложенных наборов)

v1.0.6(4mo ago)137MITPHPPHP ^8.2

Since Dec 26Pushed 4mo agoCompare

[ Source](https://github.com/on1kel/hyperf-nestedset)[ Packagist](https://packagist.org/packages/on1kel/hyperf-nestedset)[ RSS](/packages/on1kel-hyperf-nestedset/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (9)Versions (8)Used By (0)

Hyperf NestedSet
================

[](#hyperf-nestedset)

[![PHP Hyperf Package](https://camo.githubusercontent.com/813a11b32c95ca03fe4d18b3446410bb06f77877ccd74ab089f77fdb73ca43b2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e32253743382e33253743382e342d626c75652e737667)](https://camo.githubusercontent.com/813a11b32c95ca03fe4d18b3446410bb06f77877ccd74ab089f77fdb73ca43b2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e32253743382e33253743382e342d626c75652e737667)[![Hyperf Version](https://camo.githubusercontent.com/7e0f95949cb84a6462d231b7e8ee891881547996d743469e366777eaa366b0ab/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4879706572662d332e312e2a2d7265642e737667)](https://camo.githubusercontent.com/7e0f95949cb84a6462d231b7e8ee891881547996d743469e366777eaa366b0ab/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4879706572662d332e312e2a2d7265642e737667)[![License](https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667)](LICENSE.md)

Пакет Hyperf для реализации многодеревьевых иерархических структур с использованием модели вложенных множеств (Nested Set Model).

Обзор
-----

[](#обзор)

Пакет поддерживает Multi-Tree структуры (несколько корневых узлов) и позволяет перемещать узлы между деревьями. Работает с различными типами первичных ключей: `int`, `uuid` и `ulid`.

Ключевые преимущества
---------------------

[](#ключевые-преимущества)

- **Multi-Tree поддержка**: Управление несколькими независимыми деревьями в одной таблице
- **Кросс-дерево операции**: Легкое перемещение узлов между различными деревьями
- **Гибкие первичные ключи**: Работа с различными типами ключей, включая `int`, `uuid` и `ulid`
- **Оптимизация производительности**: Эффективное извлечение иерархических данных с минимальным количеством запросов к БД
- **Поддержка современного PHP**: Использование современных возможностей PHP 8.x и строгой типизации
- **Гибкая конфигурация**: Широкие возможности настройки имен атрибутов и поведения

### Что такое вложенные множества?

[](#что-такое-вложенные-множества)

[Nested Set Model](http://en.wikipedia.org/wiki/Nested_set_model) — эффективный способ хранения иерархических данных в реляционных базах данных:

> Модель вложенных множеств нумерует узлы в соответствии с обходом дерева, который посещает каждый узел дважды, присваивая номера в порядке посещения при каждом визите. Это оставляет два числа для каждого узла, которые хранятся как атрибуты. Запросы становятся недорогими: принадлежность к иерархии можно проверить сравнением этих чисел. Обновление требует перенумерации и поэтому является дорогим.

### Идеальные случаи использования

[](#идеальные-случаи-использования)

NSM показывает хорошую производительность когда:

- Деревья обновляются редко
- Требуется быстрое извлечение связанных узлов
- Построение многоуровневых меню или структур категорий

Требования
----------

[](#требования)

- PHP: 8.2|8.3|8.4
- Hyperf: ^3.1.\*

Настоятельно рекомендуется использовать базу данных, поддерживающую транзакции (например, PostgreSQL), для защиты структуры дерева от повреждения.

Установка
---------

[](#установка)

```
composer require on1kel/hyperf-nestedset
```

Базовое использование
---------------------

[](#базовое-использование)

### Настройка модели

[](#настройка-модели)

Чтобы сделать модель узлом дерева, добавьте трейт `UseTree`:

```
