falco442 / lumen-treeview
Something to help manage tree data structures
v1.0.0
2022-08-13 19:27 UTC
Requires
- php: ^8.0
- laravel/lumen-framework: ^9.0
Requires (Dev)
- fakerphp/faker: ^1.9.1
- mockery/mockery: ^1.4.4
- phpunit/phpunit: ^9.5.10
This package is auto-updated.
Last update: 2025-03-14 01:36:37 UTC
README
This package is intended for generating a tree structure from flat data (array); it makes use of the class Illuminate\Support\Collection
, so is intended for Lumen/Laravel projects.
Requirements
- PHP >= 8.0
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- laravel/lumen-framework >= 9.0
Installation
from command line, in the root folder of your Laravel/Lumen project, run the command
composer require falco442/lumen-treeview
Parameters
Static method getTree()
name | type | default value | description |
---|---|---|---|
$array |
array | none. required. | this is the array to pass. |
$parentIdField |
string | 'parent_id' |
the name for the parent field with which is constructed the relation |
$idField |
string | 'id' |
the name for the main field of the array, usually the primary key of the table from which data are taken |
$childrenField |
string | 'children' |
the name for the field which to put the children in, in the returned tree |
Static method getNode()
name | type | default value | description |
---|---|---|---|
$array |
array | none. required. | this is the array to pass. Is taken by reference |
$id |
string || number | none. required. | The id of the node to take for which construct the tree |
$parentIdField |
string | 'parent_id' |
the name for the parent field with which is constructed the relation |
$idField |
string | 'id' |
the name for the main field of the array, usually the primary key of the table from which data are taken |
$childrenField |
string | 'children' |
the name for the field which to put the children in, in the returned tree |
$node |
array | null | The node instance to pass to the method. optional, and not to be used to construct the tree. Internal use only. |
Usage
Get all trees (root nodes as array of nodes)
You can call the function getTree()
to an array of arrays (for example a collection got from Eloquent) like this:
<?php namespace App\Http\Controllers; use App\Models\Post; use falco442\Treeview; use Illuminate\Http\Request; use Illuminate\Http\Response; class PostsController extends Controller { public function tree() { $posts = Post::all()->transform(function ($item) { if ($item->parent_id === 0) { $item->parent_id = null; } return $item; })->toArray(); return \response()->json(Treeview::getTree($posts)); } }
Get single node tree
You can call the static method of the class TreeView to retrieve the tree relative to a node like this, inserting the id as parameter ID:
<?php namespace App\Http\Controllers; use App\Models\Post; use falco442\Treeview; use Illuminate\Http\Request; use Illuminate\Http\Response; class PostsController extends Controller { public function tree() { $posts = Post::all()->transform(function ($item) { if ($item->parent_id === 0) { $item->parent_id = null; } return $item; })->toArray(); return \response()->json(Treeview::getTree($posts, 101)); } }