2011-09-02 149 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(); 
} 

您也可以從連接一個模型,但可能沒有一個可用。