Récupérer le dernier id inséré
Bonjour, je suis en utilisant cakePHP 1.3 et je ne suis pas en mesure de récupérer la dernière ligne insérée id. En fait je suis en utilisant $this->Model->id pour récupérer le dernier id inséré, mais je ne suis pas en mesure d'obtenir l'id. Lorsque j'essaye de vérifier quel est le type de retour, il est dit que bool(false), ce qui signifie que rien n'est renvoyé.
Ici, je suis le chargement d'un modèle différent dans un autre contrôleur, donc, serait-ce la question?? Mais même si je suis de chargement, je reçois rien!!
$this->loadModel('Contact');
$this->Contact->query("insert into contacts(tblContact_firstName,tblContact_lastName,tblContact_company,tblContact_department,tblContact_address,tblContact_country,tblContact_city,tblContact_state,tblContact_zipcode,tblContact_phone1,tblContact_email1) values('$sanitizedFormData[fname]','$sanitizedFormData[lname]','','$sanitizedFormData[company]','$sanitizedFormData[address]','$sanitizedFormData[country]','$sanitizedFormData[city]','$sanitizedFormData[state]','$sanitizedFormData[zip]','$sanitizedFormData[phone]','$sanitizedFormData[email]');");
$this->loadModel('Contact');
$contactId = $this->Contact->id;
Et quand j'ai imprimé le $this->tableau Contact de manière récursive, j'ai trouvé la valeur de "id" clé vide. Cela explique pourquoi je recevais une valeur vide.
Maintenant, compte tenu de ma situation, comment pourrais-je récupérer le dernier id inséré spécifiques pour le contrôleur de Contact?
LAST_INSERT_ID()
Eh bien, je suis en réalité en essayant d'éviter une autre base de données téléphonique.
OriginalL'auteur macha | 2010-10-25
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez
query()
vous perdez beaucoup de automagic cakephp fournit. Utilisationsave()
à la place.En fait, vous n'avez pas besoin de charger de Contacter dans ce cas. Vous pouvez exécuter n'importe quelle requête à partir de l'actuel contrôleur avec
query()
même sauver une autre table.Vous pouvez également éviter d'utiliser
loadModel()
si votre modèle actuel est en quelque sorte liés à Contact ($this->CurrentModel->AnotherOne->Contact->save(...)
).J'espère que oui. Au moins je n'ai jamais eu le problème à récupérer le dernier id inséré. Prendre un coup d'oeil ici aussi - api13.cakephp.org/class/model#method-ModelgetLastInsertID.
oui, c'est la méthode save() de l'utilisation qui sera réglée automatiquement le modèle de l'ID. En général, essayez d'utiliser le Gâteau built-ins; ils font beaucoup de choses pratiques automatiquement pour vous (comme le réglage de l'id de modèle).
Aussi, comment pourrais-je savoir comment un modèle actuel est connecté à une autre et que l'autre modèle est relié à mon modèle de destination
Si vous avez des bonnes associations définies dans les modèles, ils seront reliés par l'appel de la façon dont je l'ai mentionné ci-dessus.
OriginalL'auteur bancer
Je pense que vous voulez faire:
http://book.cakephp.org/2.0/en/models/additional-methods-and-properties.html#model-getlastinsertid
OriginalL'auteur Waldo Bronchart
Si c'est MySQl, vous pouvez utiliser "SÉLECTIONNER à partir des contacts LAST_INSERT_ID()" requête pour obtenir les dernières ID.
ou tout simplement "SELECT LAST_INSERT_ID()"
Pour MSSQL il est "SELECT @@IDENTITY".
Cela contourne toute solution dans cakePHP, donc il y a peut être une meilleure solution.
OriginalL'auteur David Mårtensson
Vous pouvez obtenir
last inserted record id
parAlternativement, vous pouvez utiliser:
Ces méthodes peut être trouvée dans cake/libs/model/model.php sur la ligne de 2775
Remarque: Cette fonction ne fonctionne pas si vous exécutez la requête d'insertion manuellement
OriginalL'auteur Aditya P Bhatt