Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-04-2010 16:41:40

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

lastinsertId()

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

 

#2 21-04-2010 19:16:13

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: lastinsertId()

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

 

#3 21-04-2010 20:49:18

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: lastinsertId()

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

 

#4 21-04-2010 21:31:34

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: lastinsertId()

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()

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 22-04-2010 08:46:34

enzostar
Membre
Date d'inscription: 14-01-2010
Messages: 88

Re: lastinsertId()

merci beaucoup !

Hors ligne

 

#6 22-04-2010 08:48:09

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: lastinsertId()

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

Code:

$row->ma_clef;

contient aussi la valeur de ton id

A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages