Question

Bonjour J'utilise CakePHP 1.3 et je suis incapable de retreive id de la dernière ligne insérée. Je suis en fait en utilisant $ this-> Model-> id pour récupérer le dernier id Inséré mais je suis incapable d'obtenir l'identifiant. Lorsque essayé de vérifier ce qui est le type de retour, il est dit que bool (false), ce qui ne veut rien dire est renvoyé.

Ici, je suis le chargement d'un modèle différent dans un autre contrôleur, alors que ce serait la question ?? Mais même si je suis le chargement, je reviens 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 je l'imprimé $ this-> array de contact récursive, j'ai trouvé la valeur de « id » vide clé. Alors, ce qui explique pourquoi je recevais une valeur vide.

Maintenant, étant donné ma situation, comment pourrais-je obtenir le dernier id Inséré, spécifique au contrôleur contact?

Était-ce utile?

La solution

Lorsque vous utilisez query() vous perdez beaucoup de CakePHP automagique fournit. Utilisez plutôt save().

En fait, vous avez même pas besoin de charger contact dans ce cas. Vous pouvez exécuter une requête du contrôleur de courant avec query() sauver même à une autre table.

Vous pouvez également éviter d'utiliser loadModel() si votre modèle actuel est en quelque sorte associée à un contact ($this->CurrentModel->AnotherOne->Contact->save(...)).

Autres conseils

Si cela est MySQl vous pouvez utiliser « SELECT des contacts LAST_INSERT_ID () » requête pour obtenir la dernière ID. ou tout simplement "SELECT LAST_INSERT_ID ()"

Pour MSSQL il est "SELECT @@ IDENTITY".

Cela permet de contourner une solution dans CakePHP, donc il pourrait y avoir une meilleure solution.

Vous pouvez obtenir last inserted record id par

echo $this->ModelName->getLastInsertID();

Alternativement, vous pouvez utiliser:

echo $this->ModelName->getInsertID();

Cette méthode peut être trouvée dans le gâteau / libs / modèle / model.php en ligne 2775

Remarque: Cette fonction ne fonctionne pas si vous exécutez la requête d'insertion manuelle

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top