0
對於所有使用Doctrine的人,我有一個與moveAsLastChildOf()相關的問題。我正在使用Doctrine 1.1.6和Symfony 1.2使用moveAsLastChildOf移動節點
我有一個嵌套樹,有很多元素。我想刪除樹的一個元素,所以首先我必須將它的所有子元素(和後代)移到它的父元素中;然後刪除它。我做到以下幾點:
// Get the parent
$parent = $object->getParent();
if ($object->getNode()->isValidNode())
{
$children = $object->getNode()->getChildren();
// Move each child to the parent of this object (grandparent of the children)
foreach($children as $child){
$child->getNode()->moveAsLastChildOf($parent);
}
// and then delete the element
$object->getNode()->delete();
}
else
{
$object->delete();
}
但它不工作,甚至兒童都將被刪除。而我想刪除的元素仍然在數據庫中,並且是無意義的。該示例的日誌:
parent id=2412 lft(2044) rgt(2523) level(5)
to lft(2044) rgt(2523) level(5)
object to delete id=2487 lft(2375) rgt(2384) level(6)
to lft(2375) rgt(2509) level(6) *non deleted and with non-sense lft & rgt*
id=2491 lft(2376) rgt(2377) level(7)
to lft(2521) rgt(2522) level(6)
id=2490 lft(2378) rgt(2379) level(7)
to lft(2376) rgt(2377) level(6) *deleted*
id=2489 lft(2380) rgt(2381) level(7)
to lft(2519) rgt(2520) level(6)
id=2488 lft(2382) rgt(2383) level(7)
to lft(2378) rgt(2379) level(6) *deleted*
我已經快速查看了Doctrine代碼,並且沒有發現任何錯誤。我必須更好地檢查它。我還要問教條團隊,以確定這是我的問題。
非常感謝:-) – fesja 2010-02-15 13:12:47