2009-10-10 9 views

Répondre

7

Consultez le official forums. Il montre un exemple sur la façon d'utiliser des transactions avec KO3:

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

Comment faire avec la version 2, je ne sais pas. Je suis toujours nouveau à kohana moi-même, et apprendre Ko3 plutôt que 2. Mais je suppose que c'est assez similaire.

+0

simplement, je dois l'utiliser avec 2.4 – gpilotino

+0

Je peux confirmer que cela fonctionne également avec 2.3.4 – Cocowalla

8

Les transactions SQL dans Kohana 3.x ne se font pas de la même manière que dans 2.x. Dans 3.x, la classe de base de données est fournie avec des méthodes de transaction:

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

Cela fonctionne également si vous utilisez des composants ORM. Il suffit d'initier la transaction avant que ORM enregistre, met à jour, a ou supprime.

En savoir plus dans ce post: http://dev.strategystar.net/2011/10/sql-transactions-with-kohana-3-x/

2.x, les transactions devaient être effectuées manuellement:

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

Nice, c'est la voie à suivre. –

+0

DB :: instance() -> début(), DB :: instance() -> commit(), DB :: instance() -> rollback() – Moe

3

J'ai créé un module Kohana qui rend l'utilisation beaucoup plus facile les transactions:

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

Il ne, cependant, exigent au moins Kohana 3.1. Mais alors que vous venez d'ajouter

public $_transactional = true; 

au contrôleur, et toutes les actions sont exécutées automatiquement dans une transaction, qui est annulée lorsque l'action échoue avec une exception.