2017 © Pedro Peláez
 

library tree-builder

The library for building a tree array structure

image

fomvasss/tree-builder

The library for building a tree array structure

  • Monday, December 25, 2017
  • by fomvasss
  • Repository
  • 1 Watchers
  • 1 Stars
  • 135 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 160 % Grown

The README.md

Tree builder

The class for building tree array structure, (*1)

Installation

Run:, (*2)

    composer require fomvasss/tree-builder

Usage

Create your own class for your item that inherits Fomvasss\TreeBuilder\TreeBuilder class., (*3)

For example, we create CommentTreeItem and UserTreeItem:, (*4)

<?php

namespace App\Managers\TreeBuilder;

use Fomvasss\TreeBuilder\TreeBuilder;

class CommentTreeItem extends TreeBuilder
{
    protected $userTreeItem;

    public function __construct(UserTreeItem $userTreeItem)
    {
        $this->userTreeItem = $userTreeItem;
    }

    protected function transform(array $item)
    {
        return [
            'id' => $item['id'],
            'name' => $item['name'],
            'created_at' => optional(\Carbon\Carbon::parse($item['created_at']))->toIso8601String(),
            'user' => $this->userTreeItem->getItem($item['user'])
        ];
    }
}

In controller we can use next methods:, (*5)

  • getTree(array $items) - get tree structure
  • getItem(array $item) - get one item
  • getItems(array $items) - get array items
  • hideDepth() - do not show field depth in result array
  • setExceptKeys(array $keys) - set except keys for result array

! Your array must have id & parent_id keys for building tree, (*6)

<?php
class CommentController
{

    public function index(Request $request)
    {
        $comments = \App\Models\Comment::where('article_id', $request->article_id)->get();
        $commentTreeBuilder = new \App\Managers\TreeBuilder\CommentTreeItem();

        return \response()->json(['data' => $commentTreeBuilder->getTree($comments->toArray())]);
    }

    public function show($id)
    {
        $comment = \App\Models\Comment::findOrFail($id);
        $commentTreeBuilder = new \App\Managers\TreeBuilder\CommentTreeItem();

        return \response()->json(['data' => $commentTreeBuilder->hideDepth()->getItem($comment->toArray())]);
    }
}

Example json results:, (*7)

{
"data": [
     {
        "id": 50,
        "name": "Larson, Veum and Ondricka",
        "created_at": "2017-12-23T11:49:02+00:00",
        "user": {
            "id": 7,
            "name": "Brandyn Abbott DVM"
        },
        "children": [
            {
                "id": 73,
                "name": "Connelly-Zulauf",
                "created_at": "2017-12-23T11:49:11+00:00",
                "user": {
                    "id": 9,
                    "name": "Reba Sporer"
                },
                "children": [
                    {
                        "id": 85,
                        "name": "Ivanov Ivan",
                        "created_at": "2017-12-23T19:15:08+00:00",
                        "user": {
                            "id": 2,
                            "name": "Ned Kunde"
                        },
                        "children": [],
                        "depth": 3
                    }
                ],
                "depth": 2
            }
        ],
        "depth": 1
    },
    {
        "id": 54,
        "name": "Gorczany-Swift",
        "created_at": "2017-12-23T11:49:02+00:00",
        "user": {
            "id": 11,
            "name": "Kevin Legros"
        },
        "children": [],
        "depth": 1
    }
        ]
}

The Versions

25/12 2017

dev-master

9999999-dev https://github.com/fomvasss/tree-builder

The library for building a tree array structure

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Vasyl Fomin

comments tree builder

25/12 2017

1.0.1

1.0.1.0 https://github.com/fomvasss/tree-builder

The library for building a tree array structure

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

by Vasyl Fomin

comments tree builder