Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento捕获异常并回滚数据库事务_Php_Database_Magento_Transactions_Model - Fatal编程技术网

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

Php Magento捕获异常并回滚数据库事务,php,database,magento,transactions,model,Php,Database,Magento,Transactions,Model,我正在研究Magento模块,需要知道是否有可能回滚一系列模型保存。基本上,我有五个模型,加上模块中的几个模型,我需要一个接一个地保存: admin/role admin/user core/website core/store_group core/store mymodule/model1 mymodule/model2 我的问题是,每当这些模型中的任何一个抛出异常时,我都需要进入MySQL并手动删除所有保存的行。这是非常徒劳的 我很确定Magento没有在我的上下文中可以访问的回滚过程。

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

admin/role
admin/user
core/website
core/store_group
core/store
mymodule/model1
mymodule/model2
我的问题是,每当这些模型中的任何一个抛出异常时,我都需要进入MySQL并手动删除所有保存的行。这是非常徒劳的

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


所以,我的问题是,在Magento中执行数据库事务是否有一些我应该知道的最佳实践?

我已经看到了以下核心代码中使用的内容,看起来它正是您所订购的

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

core/resource\u事务
对象允许您添加Magento对象,并对其执行批量保存。试一试,我很想在评论中听听这对你有没有用。

这确实有效。谢谢我还发现,如果需要向模型添加更多数据,我可以再次保存事务。例如,我需要为商店模型设置网站id和商店组id。第一次事务保存后,将使用主键更新模型。然后我再次保存并更新行。