我知道如何在zend框架中做到这一点
$db->beginTransaction();
try {
$db->query(...);
$db->query(...);
$db->query(...);
.
.
.
$db->commit();
} catch (Exception $e) {
$db->rollBack();
}
但是我想用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();
}
如果他们中的任何人未能保存,那么所有人都应该回滚
谢谢
解决方法:
查看app / code / core / Mage / Core / Model / Resource / Transaction.php
此模型允许在事务中添加另一个模型作为对象.在保存期间,它会为每个添加的对象调用$object-> save().如果出现故障,就会打电话
$object-> getResource() – >每个对象的rollBack().您还可以通过addCommitCallback(array($object,’callbackFunctionName’))添加提交回调.
如果您需要删除交易,请拨打$transaction-> delete()而不是$transaction-> save()在这种情况下,它会调用$object-> delete()而不是$object-> save()宾语.
例:
try {
$transaction = Mage::getModel('core/resource_transaction')
->addObject(Mage::getModel('modulename/table1'))
->addObject(Mage::getModel('modulename/table2'))
->addObject(Mage::getModel('modulename/table3'));
$transaction->save();
} catch (Exception $e) {
echo $e->getMessage();
}
标签:php,magento,zend-framework
来源: https://codeday.me/bug/20190528/1171965.html