我正在研究Magento模块,需要知道是否可以回滚一系列模型保存.基本上,我有五个模型加上我的模块中的几个模型,我需要一个接一个地保存:
admin/role
admin/user
core/website
core/store_group
core/store
mymodule/model1
mymodule/model2
Run Code Online (Sandbox Code Playgroud)
我的问题是,每当这些模型中的任何一个抛出异常时,我都需要进入MySQL并手动删除所有已保存的行.这非常没有成效.
我很确定Magento没有我可以在我的上下文中访问的回滚过程.例如,我查看Mage_Core_Model_Abstract并在save方法中,回滚机制都受到保护.
所以,我的问题是,在Magento中进行数据库事务是否有一些我应该注意的最佳实践?
我知道如何在zend框架中做到这一点
$db->beginTransaction();
try {
$db->query(...);
$db->query(...);
$db->query(...);
.
.
.
$db->commit();
} catch (Exception $e) {
$db->rollBack();
}
Run Code Online (Sandbox Code Playgroud)
但是我想用magento模型来做这件事
$db->beginTransaction();
try {
$modelOne = Mage::getModel('modulename/table1');
$modelTwo = Mage::getModel('modulename/table2');
$modelThree = Mage::getModel('modulename/table3');
$db->query($modelOne);
$db->query($modelTwo);
$db->query($modelThree);
.
.
.
$db->commit();
} catch (Exception $e) {
$db->rollBack();
}
Run Code Online (Sandbox Code Playgroud)
如果他们中的任何人未能保存,那么所有人都应该回滚
谢谢