2011-09-02 148 views
7

IN Magento如何在单个事务中的多个表中插入数据并在过程中出现任何错误时进行回滚?我可以编写自定义查询并使用事务,但我更喜欢使用Magento方法来完成。Magento数据库事务

回答

6

你可以试试Mage :: getModel('core/resource_transaction')。它的文档如here

但可能更有用,这里是使用它从订单创建发票的example

+0

谢谢,我明白了。 – sushantsahay

+2

示例链接的内容与答案无关 – gSorry

27

如果你正在尝试做的是模型保存,那么接受的答案是好的。这可以让你连同任何数字一起回滚。

但是,如果你执行的是可能引发回滚或者回滚自己的其他操作,那么你要使用的东西更多低级别:

$connection = Mage::getSingleton('core/resource')->getConnection('core_write'); 
try { 
    $connection->beginTransaction(); 

    // Make saves and other actions that affect the database 

    $connection->commit(); 
} catch (Exception $e) { 
    $connection->rollback(); 
} 

您也可以从连接一个模型,但可能没有一个可用。