2011-09-02 8 views
7

Magento 1つのトランザクションで複数のテーブルにデータを挿入する方法と、プロセスにエラーがある場合はロールバックする方法があります。私はカスタムクエリを書いてトランザクションを使用することができますが、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(); 
} 

はまたからの接続を取得することができますモデルがありますが、利用可能なモデルはありません。

関連する問題