falco442/lumen-treeview

Something to help manage tree data structures

v1.0.0 2022-08-13 19:27 UTC

This package is auto-updated.

Last update: 2024-11-14 00:44:45 UTC


README

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()

Static method getNode()

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