以下の機能をサポートしているか検証する
see also http://www.geocities.jp/mickindex/database/db_tree_ns.html
以下のようなデータを生成しておく
INSERT INTO "dtb_category" VALUES(1,1,NULL,1,'キッチンツール',0,5,'2017-03-07 10:14:52','2017-03-17 13:57:14',0,1,8,'category');
INSERT INTO "dtb_category" VALUES(2,2,NULL,1,'インテリア',0,6,'2017-03-07 10:14:52','2017-03-17 13:57:14',0,1,2,'category');
INSERT INTO "dtb_category" VALUES(3,1,1,1,'食器',1,3,'2017-03-07 10:14:52','2017-03-17 13:57:14',0,2,5,'category');
INSERT INTO "dtb_category" VALUES(4,1,1,1,'調理器具',1,4,'2017-03-07 10:14:52','2017-03-17 13:57:14',0,6,7,'category');
INSERT INTO "dtb_category" VALUES(5,1,3,1,'フォーク',2,2,'2017-03-07 10:14:52','2017-03-17 13:57:14',0,3,4,'category');
INSERT INTO "dtb_category" VALUES(6,6,NULL,1,'新入荷',0,1,'2017-03-07 10:14:52','2017-03-17 13:57:14',0,1,2,'category');
| category_id | category_name | tree_root | parent_category_id | level | lft | rgt |
|---|---|---|---|---|---|---|
| 1 | キッチンツール | 1 | 0 | 1 | 8 | |
| 2 | インテリア | 2 | 0 | 1 | 2 | |
| 3 | 食器 | 1 | 1 | 1 | 2 | 5 |
| 4 | 調理器具 | 1 | 1 | 1 | 6 | 7 |
| 5 | フォーク | 1 | 3 | 2 | 3 | 4 |
| 6 | 新入荷 | 6 | 0 | 1 | 2 |
SELECT *
FROM dtb_category
WHERE parent_category_id IS NULL; $RootNodes = $app['eccube.repository.category']->getRootNodes();SELECT
*
FROM dtb_category
WHERE tree_root = <tree_root_id>
AND rgt = lft + 1;$Roots = $app['eccube.repository.category']->getRootNodes();
$Leafs = $app['eccube.repository.category']->getLeafs($Roots[0]);dtb_category.hierarchy を取得
SELECT MAX(hierarchy) AS height
FROM dtb_category
WHERE tree_root = <tree_root_id>;$Tree = $app['eccube.repository.category']->childrenHierarchy();$Parent = $Category->getParent();$Parent = $Category->getChildren();$Node = $app['eccube.repository.category']->findOneByName('キッチンツール');
$Tree = $app['eccube.repository.category']->childrenHierarchy($Node, false);$app['eccube.repository.category']->verify();$Node = $app['eccube.repository.category']->findOneByName('キッチンツール');
$Paths = $app['eccube.repository.category']->getPath($Node);TODO
TODO
$Node = $app['eccube.repository.category']->findOneByName('キッチンツール');
$app['eccube.repository.category']->removeFromTree($Node);TODO 要動作確認
$Node = $app['eccube.repository.category']->findOneByName('キッチンツール');
$app['eccube.repository.category']->remove($Node);
$app['eccube.repository.category']->recover();$Node = $app['eccube.repository.category']->findOneByName('キッチンツール');
$app['eccube.repository.category']->persistAsLastChild($Node);TODO 要動作確認
$Node = $app['eccube.repository.category']->findOneByName('キッチンツール');
$app['eccube.repository.category']->persistAsFirstChild($Node);$Node = $app['eccube.repository.category']->findOneByName('キッチンツール');
$app['eccube.repository.category']->moveUp($Node);
$app['eccube.repository.category']->moveDown($Node);$app['eccube.repository.category']->recover();
$app['orm.em']->flush();