2011-02-08 2 views
2

Я использую вложенный набор с доктриной 1.2.PHP Doctrine 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

Ситуация Даст мне:

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

Ситуация даст мне:

Category 1 
    Category 1.1 
    Category 1.2 
    Category 1.3 
     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 
+0

быстрый вопрос. ситуация 2 не даст вам «Категория 1.3.1», а не «Категория 1.4»? – KSolo

ответ

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"); 

Moving 1.3 в верхней части категории 1.1:

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

Переезд 1,4 в 1.3:

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

Moving все категории 2 в категории 1, рядом с Категория 1.1:

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

Не забудьте сохранить категории после манипуляций, например, $ Cat11-> Save(). Достаточно сохранить категорию, которую вы манипулировали.

+0

Спасибо за помощь. –