vakata / phptree
一组用于在关系数据库中存储树的PHP类
3.2.0
2024-03-29 08:28 UTC
Requires
- vakata/database: ^4.0|^5.0
Requires (Dev)
- phpunit/phpunit: 4.*
README
在关系数据库中存储树。请注意,树需要有一个单一的根,因此可以安全地从这个结构开始(此示例为MySQL,但应该是清晰的)
CREATE TABLE struct ( id int(10) unsigned NOT NULL AUTO_INCREMENT, lft int(10) unsigned NOT NULL, rgt int(10) unsigned NOT NULL, lvl int(10) unsigned NOT NULL, pid int(10) unsigned NOT NULL, pos int(10) unsigned NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO struct VALUES (1, 1, 2, 0, 0, 0); # now you can use 1 as your tree root
安装
通过Composer
$ composer require vakata/phptree
使用方法
// create an instance $dbc = new \vakata\database\DB("mysqli://root@127.0.0.1/treedb"); $tree = new \vakata\phptree\Tree( $dbc, 'tree_table', [ 'id' => 'id', 'parent' => 'pid', 'position' => 'pos', 'level' => 'lvl', 'left' => 'lft', 'right' => 'rgt' ] ); // WORKING WITH NODES $tree->getRoot()->getChildren(); // get all children of the root $tree->getRoot()->addChild(new \vakata\phptree\Node(['key' => 'val1'])); // create a node $tree->getRoot()->addChild(new \vakata\phptree\Node(['key' => 'val2'])); // create a node $tree->save(); $tree->getNode(2)->moveTo($tree->getRoot(), 2); $tree->getNode(3)->copyTo($tree->getRoot()); $tree->getNode(3)->remove();
更多信息请参阅API文档
测试
$ composer test
贡献
有关详细信息,请参阅CONTRIBUTING
安全
如果您发现任何安全相关的问题,请发送电子邮件至github@vakata.com,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件