Я работаю над модулем Magento и должен знать, можно ли откатить серию сохранений модели. В принципе, у меня есть пять моделей плюс несколько из моего модуля, которые мне нужно сохранить один за другим:
admin/role admin/user core/website core/store_group core/store mymodule/model1 mymodule/model2
Моя проблема в том, что всякий раз, когда какая-либо из этих моделей генерирует исключение, мне нужно перейти в MySQL и вручную удалить все сохраненные строки. Это очень непродуктивно.
Я уверен, что Magento не имеет процедуры отката, которую я могу получить в моем контексте. Например, я посмотрел в Mage_Core_Model_Abstract
и в методе сохранения все механизмы отката защищены.
Итак, мой вопрос: есть ли какая-то передовая практика для транзакций с базами данных в Magento, о которых я должен знать?
Я видел следующее, используемое в основном коде, и это похоже на то, что вы заказали.
$transactionSave = Mage::getModel('core/resource_transaction'); $transactionSave->addObject($model_one) $transactionSave->addObject($model_two) $transactionSave->save();
Объект core/resource_transaction
позволяет добавлять объекты Magento и выполнять массовое сохранение на них. Попробуйте, и я хотел бы услышать, как это делается, или нет, работать на вас в комментариях.