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 и выполнять массовое сохранение на них. Попробуйте, и я хотел бы услышать, как это делается или не работает для вас в комментариях.