falco442 / lumen-treeview by falco442

Something to help manage tree data structures
3
0
1
Package Data
Maintainer Username: falco442
Package Create Date: 2022-08-12
Package Last Update: 2022-08-13
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-11-23 03:09:43
Package Statistics
Total Downloads: 3
Monthly Downloads: 1
Daily Downloads: 0
Total Stars: 0
Total Watchers: 1
Total Forks: 0
Total Open Issues: 0

falco442/lumen-treeview

Total Downloads Latest Stable Version License

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));
    }
}