PHPackages                             besnovatyj/yii2-nested-sets - 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. besnovatyj/yii2-nested-sets

ActiveYii2-extension[Database &amp; ORM](/categories/database)

besnovatyj/yii2-nested-sets
===========================

Nested Sets ядро для Yii2: Service/Repository/ColumnMap без привязки к конкретному модулю. Одна из реализаций дерева для besnovatyj/yii2-cms-tree-manager.

v1.1.0(1mo ago)092MITPHP &gt;=8.4

Since Jun 10Compare

[ Source](https://github.com/besnovatyj/yii2-nested-sets)[ Packagist](https://packagist.org/packages/besnovatyj/yii2-nested-sets)[ RSS](/packages/besnovatyj-yii2-nested-sets/feed)WikiDiscussions Synced 1w ago

READMEChangelogDependencies (2)Versions (3)Used By (2)

besnovatyj/yii2-nested-sets
===========================

[](#besnovatyjyii2-nested-sets)

Nested Sets ядро для Yii2: операции над деревом без behavior-методов на AR-моделях и без привязки к конкретному модулю. Multi-tree (`tree`-колонка), глубина (`depth`), опциональная сортировка корней отдельной колонкой (`sort_order`).

Выделено из `besnovatyj/yii2-cms-tree-manager` (фаза 3 плана разделения — TODO.MD того пакета). Tree-manager — фасад работы с деревом; этот пакет — одна из реализаций (абстракция «других подходов» — materialized path и т.п. — появится отдельной фазой, когда возникнет вторая реализация).

Состав
------

[](#состав)

КлассРоль`NestedSetsService`Высокоуровневые операции: create (root/prepend/append/before/after), move (включая `makeRoot` и сортировку корней `moveRootBefore/After/ToFirst/ToLast/ToPosition`, `swapRoots`, `reindexRoots`), delete (`deleteWithChildren` / `deletePromotingChildren` / `deleteLeaf`). Все операции — в транзакции.`NestedSetsRepository`Низкоуровневая работа с БД: выборки (roots/parents/descendants/children/leaves/prev/next), предикаты (`isRoot`/`isLeaf`/`isChildOf`), `populateTree`, сдвиги `lft/rgt` (`shift`), вставка/перемещение/удаление на уровне запросов.`NestedSetsColumnMap`Карта структурных колонок (`lft`/`rgt`/`depth`/`tree`/`sort`) — имена не хардкодятся; по ней же определяется, какие атрибуты модели «структурные», а какие — пользовательские.`NestedSetsException`Доменное исключение (нарушение инвариантов дерева: второй корень в single-tree, вставка before/after корня, перемещение в собственного потомка и т.п.). В фасаде маппится на HTTP 422.Использование
-------------

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

```
use Besnovatyj\NestedSets\NestedSetsColumnMap;
use Besnovatyj\NestedSets\NestedSetsRepository;
use Besnovatyj\NestedSets\NestedSetsService;

$columns = new NestedSetsColumnMap(
    leftAttribute: 'lft',
    rightAttribute: 'rgt',
    depthAttribute: 'depth',
    treeAttribute: 'tree',        // null — режим одного дерева
    sortAttribute: 'sort_order',  // null — корни без отдельной сортировки
);

$repository = new NestedSetsRepository(Menu::class, $columns, Yii::$app->db);
$service = new NestedSetsService($repository);

$service->createRoot($menu);                  // новый корень (вернёт id)
$service->appendTo($parent, $item);           // последним ребёнком
$service->moveBefore($node, $target);         // перед узлом
$service->makeRoot($node);                    // поддерево -> новый корень
$service->moveRootBefore($rootA, $rootB);     // сортировка корней (sort_order)
$service->deleteWithChildren($node);          // удалить с поддеревом
$service->deletePromotingChildren($node);     // удалить, подняв детей к родителю
```

Требования к таблице: `lft`/`rgt`/`depth` (имена настраиваются), при multi-tree — колонка дерева, при сортируемых корнях — колонка сортировки у корней.

Контракты
---------

[](#контракты)

- Доменные ошибки — только `NestedSetsException` (extends `RuntimeException`): ловите его на границе (см. `TreeController::execute()` фасада — 422 наружу).
- Операции сервиса транзакционны; репозиторий транзакций не открывает.
- Пакет зависит только от `yiisoft/yii2` (`yii\db\*`).

Связанные пакеты
----------------

[](#связанные-пакеты)

- `besnovatyj/yii2-cms-tree-manager` — Yii2-фасад: TreeManager/TreeDataSource, PHP TreeWidget, generic TreeController (использует этот пакет).
- `@besnovatyj/tree-widget-core` (npm) — TS-виджет дерева, клиентская сторона.

License
-------

[](#license)

MIT — см. [LICENSE](./LICENSE). Автор: Besnovatyj.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance90

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~26 days

Total

2

Last Release

48d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4dab004c4cab25d241bbf453f63cb48e6226d00bd84f50315e735c257c4a1b40?d=identicon)[besnovatyj](/maintainers/besnovatyj)

---

Tags

treeyii2nested sets

### Embed Badge

![Health badge](/badges/besnovatyj-yii2-nested-sets/health.svg)

```
[![Health](https://phpackages.com/badges/besnovatyj-yii2-nested-sets/health.svg)](https://phpackages.com/packages/besnovatyj-yii2-nested-sets)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.7M3.4k](/packages/craftcms-cms)[skeeks/cms

SkeekS CMS — control panel and tools based on php framework Yii2

13926.0k66](/packages/skeeks-cms)[bizley/migration

Migration generator for Yii 2.

291393.8k11](/packages/bizley-migration)[arogachev/yii2-tree

Database tree structures management for Yii 2 framework

222.1k](/packages/arogachev-yii2-tree)[yii2tech/illuminate

Yii2 to Laravel Migration Package

11516.5k](/packages/yii2tech-illuminate)[mootensai/yii2-relation-trait

Yii 2 Models load with relation, &amp; transaction save with relation

49238.0k9](/packages/mootensai-yii2-relation-trait)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
