Magento ловит исключения и откатывает транзакции базы данных

Я работаю над модулем Magento и должен знать, можно ли откатить серию сохранений модели. В принципе, у меня есть пять моделей плюс несколько из моего модуля, которые мне нужно сохранить один за другим:

admin/role
admin/user
core/website
core/store_group
core/store
mymodule/model1
mymodule/model2

Моя проблема в том, что всякий раз, когда какая-либо из этих моделей генерирует исключение, мне нужно перейти в MySQL и вручную удалить все сохраненные строки. Это очень непродуктивно.

Я уверен, что Magento не имеет процедуры отката, доступной мне в моем контексте. Например, я просмотрел Mage_Core_Model_Abstract и в методе сохранения все механизмы отката защищены.

Итак, мой вопрос: есть ли какая-то передовая практика для транзакций с базами данных в Magento, о которых я должен знать?

Ответ 1

Я видел следующее, используемое в основном коде, и похоже на то, что вы заказывали.

$transactionSave = Mage::getModel('core/resource_transaction');
$transactionSave->addObject($model_one)
$transactionSave->addObject($model_two)
$transactionSave->save();

Объект core/resource_transaction позволяет добавлять объекты Magento и выполнять массовое сохранение на них. Попробуйте, и я хотел бы услышать, как это делается или не работает для вас в комментариях.