webfactorybulgaria/nestablecollection
| Install | |
|---|---|
composer require webfactorybulgaria/nestablecollection |
|
| Latest Version: | v4.0.0 |
| Laravel: | 4 · 5 |
| License: | MIT |
| Last Updated: | Dec 11, 2015 |
| Links: | GitHub · Packagist |
NestableCollection
A Laravel/Lumen Package that extends Collection to handle unlimited nested items following adjacency list model.
Installation
Run composer require typicms/nestablecollection
Usage
The model must have a parent_id attributes :
protected $fillable = array(
'parent_id',
// …
}
and must use the following trait:
use TypiCMS\NestableTrait;
Now each time you get a collection of that model, it will be an instance of TypiCMS\NestableCollection in place of Illuminate\Database\Eloquent\Collection.
If you want a tree of models, simply call the nest method on a collection ordered by parent_id asc :
Model::orderBy('parent_id')->get()->nest();
Of course you will probably want a position column as well. So you will have to order first by parent_id asc and then by position asc.
Indented and flattened list
listsFlattened() method generate the tree as a flattened list with id as keys and title as values, perfect for select/option, for example :
[
'22' => 'Item 1 Title',
'10' => ' Child 1 Title',
'17' => ' Child 2 Title',
'14' => 'Item 2 Title',
]
To use it, first call the nest() method, followed by the listsFlattened() method:
Model::orderBy('parent_id')->get()->nest()->listsFlattened();
By default it will look for a title column. You send as first parameter a custom column name:
Model::orderBy('parent_id')->get()->nest()->listsFlattened('name');
Related Packages
A Laravel Package that extends Collection to handle unlimited nested items follo...
Baum is an implementation of the Nested Set pattern for Eloquent models.
Baum is an implementation of the Nested Set pattern for Eloquent models.
Version History
| Version | Released | Laravel | License |
|---|---|---|---|
| v4.0.0 | ~4.2.0| | MIT | |
| v1.1.1 | ~4.2.0| | MIT | |
| v1.1.0 | ~4.2.0| | MIT | |
| v1.0.2 | ~4.2.0| | MIT | |
| v1.0.1 | ~4.2.0| | MIT | |
| v1.0.0 | ~4.2.0| | MIT |
