12
votes

Zend Framework: Comment récupérer l'ID de la dernière ligne insérée?

J'insère une nouvelle ligne dans ma base de données avec ce code:

$data = array(
    'key' => 'value'
);
$this->getDbTable()->insert($data);


0 commentaires

4 Réponses :


10
votes

un gotcha. Lorsque vous appelez $ ceci-> getdbtable () -> insérer ($ données); Vous devez vous assurer que $ données incluez la "clé primaire" de votre table. Par exemple, id = null s'il est auto-incrément. Sinon, insert () ne renvoie pas le dernier identifiant inséré.


2 commentaires

Merci cong - cela m'a sauvé -


Une note, cela est déjà marqué comme fixé en V1.11.6. Voir Framework.zend.com/issues/browse/zf-3837



15
votes

Avez-vous essayé cela? Cela fonctionne également bien.

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


0 commentaires

0
votes

Essayez ci-dessous Code:

Pour insérer des données: P>

$this->tableGateway->lastInsertValue;


1 commentaires

Que se passe-t-il si un autre utilisateur a inséré un enregistrement après, l'EtablissementValue dernier obtiendrait le dernier identifiant inséré en général ou pour la transaction de certaines transactions -.



0
votes

Il y a aussi fonctionned code> la fonction de sorcière renvoie la prochaine nouvelle carte d'identité, de sorte que vous pouvez 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);


0 commentaires