PHPackages                             hsen/tp6-closure-table - 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. [Database &amp; ORM](/categories/database)
4. /
5. hsen/tp6-closure-table

ActiveLibrary[Database &amp; ORM](/categories/database)

hsen/tp6-closure-table
======================

tp6-closure-table

381PHP

Since Jun 23Pushed 5y ago1 watchersCompare

[ Source](https://github.com/h274799010/tp6-closure-table)[ Packagist](https://packagist.org/packages/hsen/tp6-closure-table)[ RSS](/packages/hsen-tp6-closure-table/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

About
-----

[](#about)

优雅的树形数据结构管理包,基于`Closure Table`模式设计.

Features
--------

[](#features)

- 优雅的树形数据设计模式
- 最少的数据库查询
- 一个think\\Model Trait简单操作
- 完善的树形结构操作方法
- 支持生成树形数据
- 支持多个根存在
- 支持节点/树修复
- ...

依赖
--

[](#依赖)

- php &gt; 7.1.0
- topthink/framework ^6.0.0
- mysql &gt; 8.0.0

关于`Closure Table`
-----------------

[](#关于closure-table)

`Closure Table`将树中每个节点与其后代节点的关系都存储了下来, 这将需要一个存储节点关系的表`xxx_closure`.

例如一个菜单表`menus`:

idnameparent1A02AA13AB14AAA25ABA36ABAA5一个基本的`closure`表包含`ancestor`,`descendant`,`distance`3个字段,如:

ancestordescendantdistance110121131142152163220241330351362440550561660这个表记录了每个节点之间的关系,并且还记录了一条自身的关联,如：`1,1,0`.

使用
--

[](#使用)

`ClosureTable`提供了大量方法操作树结构.

```
$ php think closuretable:make Node
$ php think migrate:run
```

可以生成实体类的xxx\_closure 表的迁移数据 自动在数据生成数据表

### 影响树结构的方法

[](#影响树结构的方法)

```
