我正在使用带有Zend框架的doctrine 1.2.4的NestedSet行为 但是在插入已保存的根节点的子节点时遇到了一些困难 Doctrine文档显示了在同一页面上创建root +子元素的情况 在我的情况下,根已经创建并保存,我需要插入一个孩子
这是一个例子
//// 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,或者还有其他方法可以操作此嵌套集
任何建议将不胜感激
答案 0 :(得分: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,你可以使用它来插入子节点作为最后一个子节点。