相关疑难解决方法(0)

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

我正在研究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中进行数据库事务是否有一些我应该注意的最佳实践?

php database transactions model magento

10
推荐指数
1
解决办法
3073
查看次数

单个提交中的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)

如果他们中的任何人未能保存,那么所有人都应该回滚

谢谢

php zend-framework magento

4
推荐指数
1
解决办法
2654
查看次数

标签 统计

magento ×2

php ×2

database ×1

model ×1

transactions ×1

zend-framework ×1