Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour j'ai crée des classes qui étendent Zend_Db_Table_Abstract.
Le problème est que je ne dispose pas de la méthode lastinsertId().
Quelqu'un peut il m'éclairer ?
Merci pour votre aide.
Hors ligne
Il n'y a pas de méthode lastinsertId() dans Zend_Db_Table_Abstract, sauf erreur de ma part, il n'y a que fetchAll(), select(), insert(), update(), delete() et find() (et une ou deux autres méthodes)
Hors ligne
si tu fais un mapping complet
cad
créer une classe Table dérivant de Zend_Db_Table_Abstract
une classe row dérivant de Zend_Db_Table_Row_Abstract
pour tes objets
lorsque tu veux insérer un objet en base tu créer ton objet row et un appelle la méthode insert de ton Row
il va aller tout seul se ranger dans sa table et il sera mis à jour des
valeurs par défaut pour les champs que tu n'auras pas renseigné
au passage l'id de ton row sera valorisé par l'id du Row
LastInsertId n'existe pas en SQL c'est un truc de MySQL
Oracle et postgreSQL et les autres propose une méthode pour obtenir un id AVANT l'insert ce qui permet de préparer une transaction sur plusieurs tables et de l'exécuter en un seul appel.
alors qu'avec My SQL il faut insérer le row de la table principale récupérer l'id puis l'utiliser dans les tables dépendantes
du coup le framework cache complètement ce fonctionnement pour qu'il soit homogène quelque soit le moteur de base utilisé.
A+JYT
Hors ligne
Hello,
Si $table est une instance d'un objet étendant Zend_Db_Table_Abstract :
$row = $table->createRow(); $row->champs1 = 1; $row->champs2 = 'test'; $id = $row->save();
$id sera ton lastInsertId()
@+
Hors ligne
merci beaucoup !
Hors ligne
mikaelkael a écrit:
Hello,
Si $table est une instance d'un objet étendant Zend_Db_Table_Abstract :Code:
$row = $table->createRow(); $row->champs1 = 1; $row->champs2 = 'test'; $id = $row->save();$id sera ton lastInsertId()
@+
et si ta clef primaire est ma_clef
$row->ma_clef;
contient aussi la valeur de ton id
A+JYT
Hors ligne