2011-09-18 1 views
2

Lorsque j'essaie d'utiliser la fonction '-> lastInsertId()' pour récupérer le lat ID d'une table, je récupère '0'. Je ne trouve pas la solution. Ma table est un auto-incrémentZF dernier insert ID me renvoie 0 '0'

J'essaye de l'obtenir dans le contrôleur avec ce code.

$reviews = new Application_Model_DbTable_Reviews(); 
$lastId = $reviews->getAdapter()->lastInsertId(); 
echo $lastId; 

J'espère que quelqu'un peut m'aider.

Cordialement,

Nick

+2

insérons vous un enregistrement dans le même script? Parce que les fonctions _last_insert_id() s'appliquent généralement à la connexion en cours seulement –

+0

Non je n'insère rien dans ce script! Mais ce que j'essaie d'atteindre. J'ai besoin de l'identifiant de l'insert pour un autre insert. J'ai besoin de l'ID de la nouvelle révision insérée pour la lier avec une ligne dans une autre table. – Nicky

Répondre

1

Eh bien ce genre de choses est fait pas mention dans docs mais il fonctionne pour exemple si vous avez le nom de la table 'Book' avec PK book_id, FK user_id et table 'utilisateur' avec PK user_id

<<Book>> 
*book_id 
title 
user_id 

<<User>> 
*user_id 
name 
age 

puis

$userTb = new Model_DbTable_User(); 
$user = $userTb->createRow(); 
$user->name = "jason"; 
$user->age = 25; 
$user->save(); 

// bien après avoir sauvegardé l'enregistrement ZF remplit PK pour vous maintenant vous avez maintenant un accès en lecture seule à PK incrémenté automatiquement simplement par $ userTb-> user_id;

si

$bookTb = new Model_DbTable_Book(); 
$book = $bookTb->createRow(); 
$book->title = 'php'; 
$book->user_id = $user->user_id; 
$bookId = $book->save(); // this is another way of accessing auto generated PK at insert tim . 
+0

Il semble faire exactement ce que je veux! Merci beaucoup, je vais le faire dans mon script! :) – Nicky