承接 fomvasss/tree-builder 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fomvasss/tree-builder

Composer 安装命令:

composer require fomvasss/tree-builder

包简介

The library for building a tree array structure

README 文档

README

The class for building tree array structure

Installation

Run:

	composer require fomvasss/tree-builder

Usage

Create your own class for your item that inherits Fomvasss\TreeBuilder\TreeBuilder class.

For example, we create CommentTreeItem and UserTreeItem:

<?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:

  • 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

<?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:

{
"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
	}
        ]
}

统计信息

  • 总下载量: 1.99k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-12-25

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固