我正在研究Magento模块,需要知道是否可以回滚一系列模型保存。基本上,我有五个模型加上我的模块中的几个模型,我需要一个接一个地保存:
admin/role
admin/user
core/website
core/store_group
core/store
mymodule/model1
mymodule/model2
我的问题是,每当这些模型中的任何一个抛出异常时,我都需要进入MySQL并手动删除已保存的所有行。这非常没有效果。
我很确定Magento没有我可以在我的上下文中访问的回滚过程。例如,我查看Mage_Core_Model_Abstract
并在save方法中,回滚机制都受到保护。
所以,我的问题是,我应该注意在Magento进行数据库事务的最佳实践吗?
答案 0 :(得分:13)
我已经看到核心代码中使用了以下内容,它看起来就像你订购的那样。
$transactionSave = Mage::getModel('core/resource_transaction');
$transactionSave->addObject($model_one)
$transactionSave->addObject($model_two)
$transactionSave->save();
core/resource_transaction
对象允许您添加Magento对象,并对它们执行大量保存。尝试一下,我很想知道这些在评论中是如何做到的,或者不对你有用。