Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP原则1.2使用嵌套集,如何在不同情况下移动节点_Php_Nested Sets_Doctrine 1.2 - Fatal编程技术网

PHP原则1.2使用嵌套集,如何在不同情况下移动节点

PHP原则1.2使用嵌套集,如何在不同情况下移动节点,php,nested-sets,doctrine-1.2,Php,Nested Sets,Doctrine 1.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.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
...
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
情况2会给我:

Category 1
   Category 1.1
   Category 1.2
   Category 1.3
      Category 1.4
...
情况3会给我:

Category 1
   Category 1.3
   Category 1.1
   Category 1.2
   Category 1.4
...
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

请注意,您最初的问题并不完全正确:在案例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);
$cat21->getNode()->moveAsNextSiblingOf($cat11);
将1.4移到1.3内:

$cat14->getNode()->moveAsFirstChildOf($cat13);
将所有类别2移动到类别1内,靠近类别1.1:

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

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

快速提问。情况2不会给你“1.3.1类”而不是“1.4类”吗?