kohana ORM を使用して mysql トランザクションとロールバックを使用することは (どのように) 可能ですか?
3 に答える
Kohana 3.xのSQLトランザクションは、2.xと同じ方法では実行されません。3.xでは、データベースクラスにトランザクションメソッドが付属しています。
$db->begin();
$db->commit();
$db->rollback();
これは、ORMのものを使用している場合にも機能します。ORMが保存、更新、または削除する前に、トランザクションを開始するだけです。
この投稿で詳細を読む:http: //dev.strategystar.net/2011/10/sql-transactions-with-kohana-3-x/
2.xでは、トランザクションは手動で実行する必要がありました。
$this->db->query("START TRANSACTION")
公式フォーラムをチェックしてください。Ko3 でトランザクションを使用する方法の例を示します。
$db->query(NULL, 'TRANSACTION START');
// Do stuff
$db->query(NULL, 'COMMIT');
バージョン2でそれを行う方法はわかりません。私はまだ kohana を始めたばかりで、Ko2 ではなく Ko3 を学んでいます。しかし、かなり似ていると思います。
トランザクションの使用をより簡単にする Kohana モジュールを作成しました。
https://github.com/brazzy/kohana-transactional
ただし、少なくとも Kohana 3.1 が必要です。しかし、あなたはただ追加するだけです
public $_transactional = true;
すべてのアクションはトランザクション内で自動的に実行され、アクションが例外で失敗するとロールバックされます。