Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] jDao et les transactions

Posted by airlaza on 06/07/2011 05:34

Bonjour à tous,

J'aimerais gérer les transactions avec les Dao, est-ce possible? je ne trouve aucun exemple sur le net traitant le sujet. Est-ce correct de mettre les codes suivants :

$mon_record=jDao::createRecord('mon_selecteur_dao'); //je crée un record
$mon_record->champ1=...
....
$ma_connexion=jDb::getConnexion(); //je récupère la connexion en cours
$ma_connexion->beginTransaction(); //j'initie la transaction
$ma_dao=jDao::get('mon_selecteur_dao'); //je récupère la dao
$ok=$ma_dao->insert($mon_record); //j'enregistre le record dans le dao
if($ok) $ma_connexion->commit();
else $ma_connexion->rollback();

Je ne veux pas utiliser la fonction exec ou query avec $ma_connexion (afin d'éviter l'écriture des requetes SQL), autant profiter des fonctions de Dao.

Le but c'est de pouvoir récupérer le lastInsertId en cas de d'accès concurrents à la base de données.

J'utilise postgresql 8.4

Merci de votre conseil.

  [Opened] jDao et les transactions

Reply #1 Posted by laurentj on 06/07/2011 13:09

Bonjour,

oui ça devrait fonctionner, jDao fait lui aussi un getConnexion, qui renvoit la même connection si elle est déjà ouverte.

  [Opened] jDao et les transactions

Reply #2 Posted by airlaza on 06/07/2011 20:15

Merci.

je vais faire le test en réel et on verra la suite. Je considère que c'est résolu.

  [Opened] jDao et les transactions

Reply #3 Posted by yebmetch on 05/20/2015 13:11

Salut à tous et merci cette discution m'a été très utile, un vrai soulagement. je voudrais juste notifier quelque chose dans le code donné plus haut. c'est plutôt

$ma_connexion=jDb::getConnection(); //je récupère la connexion en cours

Au lieu de

$ma_connexion=jDb::getConnexion(); //je récupère la connexion en cours

Encore merci.

 
Page
  1. jDao et les transactions