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");
}

Références externes