https://github.com/efureev/laravel-trees
tree structures with best perfomance
https://github.com/efureev/laravel-trees
laravel nestedset php tree tree-structure
Last synced: 21 days ago
JSON representation
tree structures with best perfomance
- Host: GitHub
- URL: https://github.com/efureev/laravel-trees
- Owner: efureev
- License: other
- Created: 2018-12-03T08:44:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-10T08:32:23.000Z (about 2 months ago)
- Last Synced: 2025-04-01T11:07:07.881Z (28 days ago)
- Topics: laravel, nestedset, php, tree, tree-structure
- Language: PHP
- Homepage:
- Size: 380 KB
- Stars: 130
- Watchers: 3
- Forks: 17
- Open Issues: 1
-
Metadata Files:
- Readme: Readme.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README



[](https://packagist.org/packages/efureev/laravel-trees)
[](https://packagist.org/packages/efureev/laravel-trees)
[](https://packagist.org/packages/efureev/laravel-trees)[](https://packagist.org/packages/efureev/laravel-trees)
[](https://codeclimate.com/github/efureev/laravel-trees/maintainability)
[](https://codeclimate.com/github/efureev/laravel-trees/test_coverage)# Laravel Tree Structure
__Contents:__
- [Theory](#information)
- [Installation](#installation)
- [Documentation](#documentation)
- [Basic](docs/Basic.md)
- [AdvancedTreeConfig](docs/AdvancedTreeConfig.md)
- [Migration](docs/Migration.md)
- [Creating Nodes](docs/CreatingNodes.md)
- [Managing Nodes](docs/ManagingNodes.md)
- [Receiving Nodes](docs/ReceivingNodes.md)
- [Model's Helpers](docs/Helpers.md)
- [Console](docs/Console.md)
- [Health And Fixing.md](docs/HealthAndFix.md)## Information
This package is Multi-Tree structures (a lot of root-nodes).
### Screenshots
![]()
![]()
### What are nested sets?
Nested sets or [Nested Set Model](http://en.wikipedia.org/wiki/Nested_set_model) is a way to effectively store
hierarchical data in a relational table. From wikipedia:> The nested set model is to number the nodes according to a tree traversal,
> which visits each node twice, assigning numbers in the order of visiting, and
> at both visits. This leaves two numbers for each node, which are stored as two
> attributes. Querying becomes inexpensive: hierarchy membership can be tested by
> comparing these numbers. Updating requires renumbering and is therefore expensive.### Applications
NSM shows good performance when tree is updated rarely. It is tuned to be fast for getting related nodes. It is ideally
suited for building multi-depth menu or categories for shop.## Requirements
- PHP: 8.2|8.3
- Laravel: ^11.*It is highly suggested to use database that supports transactions (like Postgres) to secure a tree from possible
corruption.## Installation
```shell
composer require efureev/laravel-trees
```## Testing
```shell
./vendor/bin/phpunit --testdox
# or
composer test
```## Documentation
The package allows to create multi-root structures: no only-one-root! And allows to move nodes between trees.
Moreover, it also works with different model's primary key: `int`, `uuid`, `ulid`.- [Basic](docs/Basic.md)
- [AdvancedTreeConfig](docs/AdvancedTreeConfig.md)
- [Migration](docs/Migration.md)
- [Creating Nodes](docs/CreatingNodes.md)
- [Managing Nodes](docs/ManagingNodes.md)
- [Receiving Nodes](docs/ReceivingNodes.md)
- [Model's Helpers](docs/Helpers.md)
- [Console](docs/Console.md)
- [Health And Fixing.md](docs/HealthAndFix.md)