Манипулировать доктриной NestedSet tree - PullRequest
1 голос
/ 05 апреля 2011

Я использую поведение NestedSet с доктриной 1.2.4 с Zend Framework но у меня возникли некоторые трудности при вставке дочернего узла уже сохраненного корневого узла документация Doctrine показывает случай создания обоих корневых + дочерних элементов на одной странице в то время как в моем случае корень уже создан и сохранен, и мне нужно вставить его дочерний элемент

вот пример

        //// reading old order info 
        $order = new Order();
        $orderInfo = $order->read($order_id);
        $oldOrder = $orderInfo->toArray();
        $oldOrder = $oldOrder[0];
        //// building the new order information 
        $renew = new Orders();
        $renew->domain_id   = (int)    $oldOrder["domain_id"];
        $renew->auth_id     = (int)    $oldOrder["auth_id"];
        $renew->price       =          $oldOrder["price"];
        $renew->type        = (string) $oldOrder["type"];
        $renew->timestamp   = $oldOrder["timestamp"];
        $renew->save();
        //// doctrine throwing an error here complaining the $orderInfo should be an instance  of Doctrine_Record  while its now an instance of Doctrine_Collection
        $aa = $renew->getNode()->insertAsLastChildOf($orderInfo);

Я действительно не знаю, как получить заказ из БД и как преобразовать его в doctrine_record или есть другие способы манипулирования этим вложенным набором
Любое предложение будет оценено

1 Ответ

1 голос
/ 05 апреля 2011

Попробуйте это:

// This will retrieve the 'parent' record
$orderInfo = Doctrine_Core::getTable('Order')->find($order_id);

// building the new order information 
$renew = new Orders();
$renew->domain_id   = (int)    $oldOrder["domain_id"];
$renew->auth_id     = (int)    $oldOrder["auth_id"];
$renew->price       =          $oldOrder["price"];
$renew->type        = (string) $oldOrder["type"];
$renew->timestamp   = $oldOrder["timestamp"];
$renew->save();

$renew->getNode()->insertAsLastChildOf($orderInfo);

Это должно получить Doctrine Record родительского узла, и вы можете использовать его для вставки дочернего элемента в качестве последнего дочернего элемента.

...