Я импортирую некоторый контент в модель Nested Tree и внедряю транзакцию, чтобы убедиться, что каждый объект был сохранен; и если нет, удалите его из дерева. Я использую Doctrine 1.1.6.
// Start the transaction
$conn = Doctrine_Manager::connection();
try {
$conn->beginTransaction();
// add it as a child of the suburb
$object->getNode()->insertAsLastChildOf($parent);
...
// save related objects
...
$conn->commit();
} catch(Doctrine_Exception $e) {
$conn->rollback();
}
Что происходит сейчас, так это то, что в случае ошибки в блоке транзакции все объекты будут удалены. Однако дерево не возвращается в исходное положение. Это означает, что у меня будут пробелы в позициях 'lft' и 'rgt'. Тогда дерево будет повреждено; и исправление дерева с тысячами результатов может быть очень дорогим.
Как сделать откат insertAsLastChildOf (). Я думаю, что это то, что доктрина должна делать сама по себе, но я надеюсь, что кто-то может дать мне подсказку.
спасибо!