Ahm*_*med 4 php zend-framework 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)
如果他们中的任何人未能保存,那么所有人都应该回滚
谢谢
查看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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2654 次 |
| 最近记录: |