2009-10-10 9 views

Antwort

7

Überprüfen Sie die official forums. Es zeigt ein Beispiel dafür, wie Transaktionen mit Ko3 zu verwenden:

$db->query(NULL, 'TRANSACTION START'); 
// Do stuff 
$db->query(NULL, 'COMMIT'); 

Wie es zu tun mit der Version 2, ich weiß es nicht. Ich bin selbst noch neu bei Kohana und lerne Ko3 statt 2. Aber ich vermute, es ist ziemlich ähnlich.

+0

nur, ich muss es mit 2.4 verwenden – gpilotino

+0

Ich kann bestätigen, dass dies auch mit 2.3.4 funktioniert – Cocowalla

8

SQL-Transaktionen in Kohana 3.x werden nicht wie in 2.x ausgeführt. In 3.x enthält die Datenbankklasse folgende Transaktionsmethoden:

$db->begin(); 
$db->commit(); 
$db->rollback(); 

Dies funktioniert auch, wenn Sie ORM-Dateien verwenden. Starten Sie die Transaktion einfach, bevor ORM speichert, aktualisiert, löscht oder löscht.

Lesen Sie mehr in diesem Beitrag: http://dev.strategystar.net/2011/10/sql-transactions-with-kohana-3-x/

In 2.x Transaktionen getan werden musste manuell:

$this->db->query("START TRANSACTION") 
+0

Schön, das ist der Weg zu gehen. –

+0

DB :: instanz() -> begin(), DB :: instanz() -> commit(), DB :: instanz() -> rollback() – Moe

3

ich ein Kohana Modul erstellt haben, die einfacher mit Transaktionen viel macht:

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

Es setzt allerdings voraus, mindestens Kohana 3.1. Aber dann fügen Sie einfach

public $_transactional = true; 

an die Steuerung und alle Aktionen werden automatisch in einer Transaktion ausgeführt, die zurückgesetzt wird, wenn die Aktion mit einer Ausnahme fehlschlägt.