以下の機能をサポートしているか検証する
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();