1

我正在使用带有 Zend 框架的学说 1.2.4 的 NestedSet 行为,但是在插入已保存的根节点的子节点时遇到了一些困难,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);

我真的不知道如何从数据库中检索订单以及如何将其转换为教义记录或有其他方法来操作此嵌套集
任何建议将不胜感激

4

1 回答 1

1

试试这个:

// 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,您可以使用它将子节点作为最后一个子节点插入。

于 2011-04-05T16:29:19.360 回答