Magento捕获异常并回滚数据库事务

时间:2011-02-02 19:00:33

标签: php database magento transactions model

我正在研究Magento模块,需要知道是否可以回滚一系列模型保存。基本上,我有五个模型加上我的模块中的几个模型,我需要一个接一个地保存:

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

我的问题是,每当这些模型中的任何一个抛出异常时,我都需要进入MySQL并手动删除已保存的所有行。这非常没有效果。

我很确定Magento没有我可以在我的上下文中访问的回滚过程。例如,我查看Mage_Core_Model_Abstract并在save方法中,回滚机制都受到保护。

所以,我的问题是,我应该注意在Magento进行数据库事务的最佳实践吗?

1 个答案:

答案 0 :(得分:13)

我已经看到核心代码中使用了以下内容,它看起来就像你订购的那样。

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

core/resource_transaction对象允许您添加Magento对象,并对它们执行大量保存。尝试一下,我很想知道这些在评论中是如何做到的,或者不对你有用。