Php Magento捕获异常并回滚数据库事务
我正在研究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没有在我的上下文中可以访问的回滚过程。
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。第一次事务保存后,将使用主键更新模型。然后我再次保存并更新行。