2009-10-10 19 views

risposta

7

Controlla il official forums. Essa mostra un esempio su come utilizzare le transazioni con KO3:

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

Come fare con la versione 2, non lo so. Sono ancora nuovo nel kohana e sto imparando Ko3 piuttosto che 2. Ma suppongo che sia abbastanza simile.

+0

semplicemente, devo usarlo con 2.4 – gpilotino

+0

Posso confermare che questo funziona anche con 2.3.4 – Cocowalla

8

Le transazioni SQL in Kohana 3.x non vengono eseguite allo stesso modo di 2.x. In 3.x, la classe base di dati è dotato di metodi di transazione:

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

Questo funziona anche se si utilizza roba ORM. Basta avviare la transazione prima che ORM salvi, aggiorni, o cancelli.

Per saperne di più in questo post: http://dev.strategystar.net/2011/10/sql-transactions-with-kohana-3-x/

In 2.x, le operazioni dovevano essere fatto manualmente:

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

Bello, questa è la strada da percorrere. –

+0

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

3

Ho creato un modulo Kohana che rende l'utilizzo di transazioni molto più semplice:

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

Esso, tuttavia, richiedono almeno Kohana 3.1. Ma poi si aggiunge solo

public $_transactional = true; 

al controller, e tutte le azioni vengono eseguite automaticamente all'interno di una transazione, che è rotolato indietro quando l'azione non riesce con un'eccezione.