PHPackages                             dendrogram/dendrogram - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dendrogram/dendrogram

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dendrogram/dendrogram
=====================

php对关系型数据转换成树状图

v2.1(4y ago)1045679[1 issues](https://github.com/ydtg1993/dendrogram/issues)MITPHP

Since Feb 6Pushed 4y ago2 watchersCompare

[ Source](https://github.com/ydtg1993/dendrogram)[ Packagist](https://packagist.org/packages/dendrogram/dendrogram)[ RSS](/packages/dendrogram-dendrogram/feed)WikiDiscussions master Synced 6d ago

READMEChangelog (4)DependenciesVersions (5)Used By (0)

### PHP无限系统树图

[](#php无限系统树图)

[![v2.0](https://camo.githubusercontent.com/3de8b18ffde06908674696f129aae123a81c9cc9c9ca22eb126ca272f67623d8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64656e64726f6772616d2d76322e312d6f72616e67652e737667)](https://github.com/ydtg1993/dendrogram)[![laravel 5.*](https://camo.githubusercontent.com/1fd500f613af2390dd5d83eda79c8620ded2fe3abab69fd9c737680d5f585fd8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d352e2a2d79656c6c6f772e737667)](https://github.com/ydtg1993/dendrogram)[![PHP>=5.6](https://camo.githubusercontent.com/03d4a63e22b4d0a0d86012343fcb372aa36efce708fd04061d0e720e652423be/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d253345253344352e362d626c75652e737667)](https://github.com/ydtg1993/dendrogram)

```
PHP系统树图可快速的处理无限极分类的业务需求 提供两种不同的数据结构和三种视图类型

2.1：
    1.版本修视图图标bug
    2.视图 方法名称修改 buildCatalog buildRhizome ==》 buildHorizontal buildVertical
    3.buildHorizontal buildVertical buildSelect getTreeData 方法增加数据缓存 默认：-1不缓存 0永久缓存 0>缓存n秒
    4.视图路由参数router变更为非必要  传递router路由参数视图会自动绑定点击节点修改,增加按钮时的弹窗表单
    5.可绑定的按钮事件 节点标签按钮dendrogram.bindClassEnvent('dendrogram-tab',事件,回调方法) 节点新增按钮dendrogram.bindClassEnvent('dendrogram-grow',事件,回调方法)
    6.弹窗增加可自定义配置项dendrogram.form.settings
    7.无刷新的视图增删改节点操作 修复多种视图bug

```

  数据结构 adjacency list nested sets   视图类型 横向视图 Horizontal 竖向视图 Vertical 级联下拉列表 select [![example](https://github.com/ydtg1993/dendrogram/raw/master/image/view.png)](https://github.com/ydtg1993/dendrogram/blob/master/image/view.png)[![example](https://github.com/ydtg1993/dendrogram/raw/master/image/select.png)](https://github.com/ydtg1993/dendrogram/blob/master/image/select.png)

### 1.安装

[](#1安装)

`composer require dendrogram/dendrogram:v2.1`

### 2.配置

[](#2配置)

首先往Laravel应用中注册ServiceProvider，打开文件config/app.php，在providers中添加一项：

```
'providers' => [
    DenDroGram\DendrogramServiceProvider::class
]

```

### 3.发布

[](#3发布)

然后发布拓展包的配置文件，使用如下命令：

`php artisan vendor:publish`

```
会在config目录下会生成dendrogram.php的配置文件

```

### 4.数据导入

[](#4数据导入)

`php artisan migrate`

```
两表四个自定义函数 表名可先行在配置文件中修改.以保持与自定义函数内的表名一致

migrations下增加中国城市sql文件
由于查询节点过多需要配置mysql
SET GLOBAL group_concat_max_len = 20460;

```

### 数据结构概述

[](#数据结构概述)

##### adjacency结构 以父节点为基准的链式查询 增删容易 查询不便

[](#adjacency结构-以父节点为基准的链式查询-增删容易-查询不便)

[![config](https://github.com/ydtg1993/dendrogram/raw/master/image/adjacency.png)](https://github.com/ydtg1993/dendrogram/blob/master/image/adjacency.png)

##### nested结构 以左右值包容形式 增删不便 查询容易

[](#nested结构-以左右值包容形式-增删不便-查询容易)

[![config](https://github.com/ydtg1993/dendrogram/raw/master/image/nested.png)](https://github.com/ydtg1993/dendrogram/blob/master/image/nested.png)

### code说明

[](#code说明)

##### 1.生成对象

[](#1生成对象)

```
    /*adjacency list数据结构*/
    new DenDroGram(AdjacencyList::class)

    /*nested set数据结构*/
    new DenDroGram(NestedSet::class)

    两种不同数据结构分别对应两张表，请根据实际业务场景选择

```

##### 2.调用方法

[](#2调用方法)

   调用方法 方法说明 方法参数 返回内容     buildHorizontal 生成横向视图 **id**:根节点id
**column**: 节点展示记录字段名
**cache**: 缓存时间
*文件缓存需要开启目录权限chmod -R 0777 vendor/dendrogram/*
**router**: 修改节点数据路由\[POST方式\]  **html文本**
*如果没有传递router路由参数不会自动绑定点击节点修改,增加按钮时的弹窗表单*---

自定义js代码块
 *1.**绑定事件到节点的标签tab,添加按钮grow**：dendrogram.bindClassEnvent('dendrogram-tab',事件,回调方法)
 dendrogram.bindClassEnvent('dendrogram-grow',事件,回调方法)*

 *2.**可以对表单内容自定义的设置：dendrogram.form.settings = \[{配置1},{配置2}...\]***

\* settings结构为数组对象： \[setting,setting,...\]
\* 输入框setting 普通对象：
 {
 column:记录列明 必填,
 label:输入框标签 选填,
 type:输入框类型 选填,
 attribute:输入框属性参数 选填,
 options:当类setting的类型type为radio或者checkbox时的选项参数 选填
 }

\* setting中 type类型：text textarea hidden disable radio checkbox 默认text
\* options结构为数组对象 \[\] option为普通对象 {label:选项标签 必填,value:选项值 必填}    buildVertical 生成竖向视图 **id**: 根节点id
**column**: 节点展示记录字段名
**cache**: 缓存时间
**router**: 修改节点数据路由\[POST方式\]  **同上 [\[参考示例\]](https://github.com/ydtg1993/dendrogram/blob/master/test/example.php)**   buildSelect 生成级联下拉列表 **id**: 根节点id 根节点id
**label**: 列表选项显示值(记录字段名)
**value**: 列表选项值(记录字段名)
**default** : 列表选项默认值(级联数组对应值)
**cache**: 缓存时间 -1不缓存 0永久缓存 0&gt;缓存n秒 **html文本**
*获取选项结果事件的值：js中调用dendrogramUS.storage()获取选择结果值的数组*
*点击选项事件回调方法：js中调用dendrogramUS.callback = function(){}*   operateNode 节点操作 **action**: 增删改标识 \[添加记录:add 修改: update 删除: delete\]
**data**: 修改节点记录的传参\[post方式\] **新增返回id 修改删除返回bool 返回的result用json输出到客户端**   getTreeData 获取结构型数据 **id**: 根节点id
**cache**: 缓存时间 \[-1不缓存 0永久缓存 0&gt;缓存n秒\] **array**
 结构参见下图   ##### 获取数据示例

[](#获取数据示例)

[![example](https://github.com/ydtg1993/dendrogram/raw/master/image/data.png)](https://github.com/ydtg1993/dendrogram/blob/master/image/data.png)

[更多参考测试样例](https://github.com/ydtg1993/dendrogram/blob/master/test/example.php)

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity29

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~221 days

Total

4

Last Release

1629d ago

Major Versions

v1.3 → v2.02020-02-08

### Community

Maintainers

![](https://www.gravatar.com/avatar/e4ba6e03b5527ce94c514451c6ffb7a838f2807457aa5b5dd680e820c40f9218?d=identicon)[ydtg1993](/maintainers/ydtg1993)

---

Top Contributors

[![ydtg1993](https://avatars.githubusercontent.com/u/22272107?v=4)](https://github.com/ydtg1993 "ydtg1993 (95 commits)")

---

Tags

laravelphp

### Embed Badge

![Health badge](/badges/dendrogram-dendrogram/health.svg)

```
[![Health](https://phpackages.com/badges/dendrogram-dendrogram/health.svg)](https://phpackages.com/packages/dendrogram-dendrogram)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
