2009-10-10 17 views

Respuesta

7

Echa un vistazo a official forums. Se muestra un ejemplo de cómo utilizar transacciones con KO3:

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

Cómo hacerlo con la versión 2, no sé. Todavía soy nuevo para Kohana y estoy aprendiendo Ko3 en lugar de 2. Pero supongo que es bastante similar.

+0

simplemente, tengo que usarlo con 2.4 – gpilotino

+0

Puedo confirmar que esto también funciona con 2.3.4 – Cocowalla

8

Transacciones SQL en Kohana 3.x no se hacen de la misma manera que en 2.x. En 3.x, la clase de base de datos viene con métodos de transacción:

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

Esto también funciona si está utilizando material ORM. Simplemente inicie la transacción antes de que ORM guarde, actualice, elimine o a.

Leer más en este post: http://dev.strategystar.net/2011/10/sql-transactions-with-kohana-3-x/

En 2.x, las transacciones tenían que hacer manualmente:

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

Bien, este es el camino a seguir. –

+0

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

3

He creado un módulo de Kohana que hace que el uso de transacciones mucho más fácil:

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

lo hace, sin embargo, requieren al menos 3,1 Kohana. Pero a continuación, que acaba de añadir

public $_transactional = true; 

al controlador, y todas las acciones se ejecutan de forma automática dentro de una transacción, que se revierte cuando la acción falla con una excepción.