Un des gros points faible de l’actuel gestionnaire de base de données est qu’il ne propose pas la possibilité de faire des transactions. Voyons comment simplement remédier à ce problème.
Dans un contrôleur
Dans un contrôleur, car c’est ici que la plupart du temps on fait des appels vers la base de données, l’implantation est hyper simple :
public function fooAction()
{
$db = Db::getInstance();
$db->query("SET AUTOCOMMIT = 0");
$db->query("START TRANSACTION");
try {
// Awesome stuff here
} catch(Exception $e) {
// Rollback database
$db->query("ROLLBACK");
}
// If we reach this point, save data
$db->query("COMMIT");
}
Commentaires récents