2

我将嵌套集与学说 1.2 一起使用。

这是我的例子。

我得到了这棵树

Category 1
   Category 1.1
   Category 1.2
   Category 1.3
   Category 1.4
Category 2
   Category 2.1
      Category 2.1.1
      Category 2.1.2
      Category 2.1.3

情况
1 - 我如何将类别 1.3 移动到类别 1.1 的顶部
2 - 我如何将类别 1.4 移动到类别 1.3 内
3 - 我如何将 2.1 和他的孩子移动到类别 1 内并靠近类别 1.1

情况1会给我:

Category 1
   Category 1.3
   Category 1.1
   Category 1.2
   Category 1.4
...

情况2会给我:

Category 1
   Category 1.1
   Category 1.2
   Category 1.3
      Category 1.4
...

情况3会给我:

Category 1
   Category 1.1
   Category 2
      Category 2.1
         Category 2.1.1
         Category 2.1.2
         Category 2.1.3
   Category 1.2
   Category 1.3
   Category 1.4
4

1 回答 1

2

http://www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_node_interface.html

请注意,您最初的问题并不完全正确:在案例 3)中,您说您只想将 2.1 移入类别 1,但根据您为该场景提供的示例,您实际上想将所有类别 2 移入类别1.

假设您提到的名称(类别 1.1)是该类别的实际 ID,以下是您描述的场景:

$cat11 = Doctrine_Core::getTable("Category")->find("Category 1.1");
$cat13 = Doctrine_Core::getTable("Category")->find("Category 1.3");
$cat14 = Doctrine_Core::getTable("Category")->find("Category 1.4");
$cat21 = Doctrine_Core::getTable("Category")->find("Category 2.1");

将 1.3 移到类别 1.1 之上:

$cat13->getNode()->moveAsPrevSiblingOf($cat11);

将 1.4 移入 1.3:

$cat14->getNode()->moveAsFirstChildOf($cat13);

将所有类别 2 移动到类别 1 中,类别 1.1 旁边:

$cat21->getNode()->moveAsNextSiblingOf($cat11);

操作后不要忘记保存类别,例如 $cat11->save()。保存您正在操作的类别就足够了。

于 2011-02-15T22:55:39.560 回答