Download the PHP package on1kel/hyperf-nestedset without Composer
On this page you can find all versions of the php package on1kel/hyperf-nestedset. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download on1kel/hyperf-nestedset
More information about on1kel/hyperf-nestedset
Files in on1kel/hyperf-nestedset
Package hyperf-nestedset
Short Description Multi-Treeструктуры для Hyperf (реализация модели вложенных наборов)
License MIT
Informations about the package hyperf-nestedset
Hyperf NestedSet
Пакет Hyperf для реализации многодеревьевых иерархических структур с использованием модели вложенных множеств (Nested Set Model).
Обзор
Пакет поддерживает Multi-Tree структуры (несколько корневых узлов) и позволяет перемещать узлы между деревьями.
Работает с различными типами первичных ключей: int, uuid и ulid.
Ключевые преимущества
- Multi-Tree поддержка: Управление несколькими независимыми деревьями в одной таблице
- Кросс-дерево операции: Легкое перемещение узлов между различными деревьями
- Гибкие первичные ключи: Работа с различными типами ключей, включая
int,uuidиulid - Оптимизация производительности: Эффективное извлечение иерархических данных с минимальным количеством запросов к БД
- Поддержка современного PHP: Использование современных возможностей PHP 8.x и строгой типизации
- Гибкая конфигурация: Широкие возможности настройки имен атрибутов и поведения
Что такое вложенные множества?
Nested Set Model — эффективный способ хранения иерархических данных в реляционных базах данных:
Модель вложенных множеств нумерует узлы в соответствии с обходом дерева, который посещает каждый узел дважды, присваивая номера в порядке посещения при каждом визите. Это оставляет два числа для каждого узла, которые хранятся как атрибуты. Запросы становятся недорогими: принадлежность к иерархии можно проверить сравнением этих чисел. Обновление требует перенумерации и поэтому является дорогим.
Идеальные случаи использования
NSM показывает хорошую производительность когда:
- Деревья обновляются редко
- Требуется быстрое извлечение связанных узлов
- Построение многоуровневых меню или структур категорий
Требования
- PHP: 8.2|8.3|8.4
- Hyperf: ^3.1.*
Настоятельно рекомендуется использовать базу данных, поддерживающую транзакции (например, PostgreSQL), для защиты структуры дерева от повреждения.
Установка
Базовое использование
Настройка модели
Чтобы сделать модель узлом дерева, добавьте трейт UseTree:
Миграция
Используйте хелпер миграции для создания необходимых колонок:
Создание узлов
Создание корневого узла
Создание дочерних узлов
Создание соседних узлов
Перемещение узлов
Получение узлов
Получить корень
Получить родителя
Получить детей
Получить предков
Получить потомков
Получить соседей
Получить листья (узлы без детей)
Построение дерева
Проверка состояния узла
Удаление узлов
Поддержка Multi-Tree
Для включения поддержки нескольких деревьев, переопределите метод buildTree:
Затем можно работать с несколькими деревьями:
Query Scopes
Лицензия
MIT License. См. LICENSE.md для деталей.
Благодарности
Этот пакет является портом efureev/laravel-trees для Hyperf.
All versions of hyperf-nestedset with dependencies
hyperf/database Version ^3.1
hyperf/db-connection Version ^3.1
hyperf/event Version ^3.1
ramsey/uuid Version ^4.7