2009-12-08 19 views

Répondre

10

Un gotcha. Lorsque vous appelez $this->getDbTable()->insert($data);, vous devez vous assurer que $ data inclut la "clé primaire" de votre table. Par exemple, id=null s'il s'agit d'un auto-incrément. Sinon, insert() ne renverra pas le dernier ID inséré.

+0

Merci Cong - Ceci m'a sauvé - – Andre

+2

Une remarque, ceci est déjà marqué comme corrigé dans v1.11.6. Voir http://framework.zend.com/issues/browse/ZF-3837 –

15

Avez-vous essayé? Cela fonctionne aussi bien.

//just after you call your insert($data) function .. use this 
$lastInsertId = $this->getAdapter()->lastInsertId(); 
+0

voteup man thanx –

0

Essayez ci-dessous le code:

Pour insérer des données:

$this->tableGateway->insert($data); 

Obtenez Dernière valeur Inséré:

$this->tableGateway->lastInsertValue; 
+0

et si un autre utilisateur insérait un enregistrement après, lastInsertValue obtiendrait le dernier identifiant inséré en général ou pour la transaction donnée -si utilisé -? – Katia

0

Il est également newId fonction, sorcière retourne le prochain nouvel ID , vous pouvez donc l'utiliser pour insérer une nouvelle ligne.

$id = $this->getDbTable->newId('table_name', 'id'); 

$data = array(
    'id' => $id, 
    'data' => $data 
); 

$this->getDbTable->insertRow('table_name', $data); 

Maintenant, vous pouvez faire ce que vous voulez avec votre $id.