2011-12-05 12 views
1

私はkohana 3.0.14ベースのWebサイトを持っており、特定のモデルでトランザクションを使用したいと考えています。 最良のアプローチは何ですか? また、複数のテーブルでトランザクションを使用するにはどうすればよいですか? (複数のテーブルを同時にブロックするにはどうしたらいいですか?)複数表のKohana取引

DB::query(NULL, 'START TRANSACTION');    
     $contents = ORM::factory('basket_contents'); 
     $contents->product_type = $product_type; 
     $contents->category = $product->category; 
     $contents->basket = $this; 
     $contents->save(); 
    DB::query(NULL, 'COMMIT'); 

しかし、私は2つのテーブルブロックする: 今私はやっているバスケットと内容を。私はこの権利をしていると確信していない。 Kohana 3でトランザクションを使用するための最良の方法は何ですか?

+0

あなたはそれを正しく実行しています:) – matino

+0

可能性のある複製http://stackoverflow.com/questions/1546709/kohana-transaction-with-orm –

+0

ok、そしてどのように私はトランザクションが行われていることをテストすることができますそれは本当にトランザクションでした)?ありがとうございます – dana

答えて

3

Kohana 3には明らかに取引方法がありますが、文書化されていないようです。 this link

トランザクションはデータベースレベルなので、開始とコミットの間の何かは、関係するテーブルの数にかかわらず、トランザクションの一部です。

DBを使用しているとは言いませんが、MySQLを使用している場合はMySQL MyISAMテーブル(最も一般的なタイプ)がトランザクションをサポートしていないことに注意してください。MySQLでInnoDBを使用する必要があります。

https://github.com/brazzy/kohana-transactional

それは、しかし、必要が少なくともKohanaの3.1とMySQLのも当然のInnoDBを使用するようにテーブルを必要としない:

+0

私はMyISAMのすべてのテーブルを持っている場合、私はどのようにInnoDBに変換することができますか?ありがとうたくさん – dana

+3

[マニュアルを読む](http://dev.mysql.com/doc/refman/5.6/en/converting-tables-to-innodb.html) –

0

私は非常に簡単にトランザクションを使用して作るのKohanaモジュールを作成しました。

関連する問題