Frage

Hallo, ich bin mit CakePHP 1.3 und ich bin nicht in der Lage die letzte eingefügte Zeile der ID retreive. Ich benutze eigentlich $ this-> Modell-> id die letzte eingefügt ID zu retreive aber ich bin nicht in der Lage, die ID zu bekommen. Wenn versucht, zu überprüfen, was Rückgabetyp ist, sagt es als bool (false), das Mittel nichts zurückgeführt wird.

Hier bin ich lade ein anderes Modell in einem anderen Controller, so würde, dass das Problem sein ?? Aber obwohl ich Laden bin ich nichts zurück !!

$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;

Und wenn ich die $ this-> Kontakt Array rekursiv gedruckt, fand ich den Wert von „id“ Schlüssel leer. Also das erklärt, warum ich einen leeren Wert wurde erhalten.

Nun meine Situation gegeben, wie würde ich die letzte Eingabe-ID erhalten, die spezifisch für die Steuerung Kontakt?

War es hilfreich?

Lösung

Wenn Sie query() verwenden Sie verlieren viele Automagic cakephp bietet. Verwenden save() statt.

In der Tat, Sie brauchen noch nicht Kontakt in diesem Fall zu laden. Sie können jede Abfrage aus dem aktuellen Controller ausführen mit query() sogar zu einer anderen Tabelle zu speichern.

Sie können auch vermeiden, mit loadModel(), wenn Ihr aktuelles Modell irgendwie mit Kontakt ($this->CurrentModel->AnotherOne->Contact->save(...)) verbunden ist.

Andere Tipps

Wenn diese MySQl ist, könnte man „von Kontakten SELECT LAST_INSERT_ID ()“ verwendet Abfrage letzte ID zu bekommen. oder einfach nur "SELECT LAST_INSERT_ID ()"

Für MSSQL es ist "SELECT @@ identity".

Dies umgeht jede Lösung in CakePHP obwohl, so könnte es eine bessere Lösung.

Sie können last inserted record id erhalten, indem

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

Alternativ können Sie verwenden:

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

Diese Methoden können in Kuchen / libs / model / model.php on line 2775

finden

Hinweis: Diese Funktion funktioniert nicht, wenn Sie ausführen, um die INSERT-Abfrage manuell

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top