Domanda

Ciao Sto usando cakePHP 1.3 e sono in grado di prelevare id dell'ultimo riga inserita. Io in realtà sto usando $ this-> Modello-> id retreive l'ultimo ID inserito, ma non sono in grado di ottenere l'id. Quando ha cercato di controllare ciò che è tipo di ritorno, si dice come bool (false), che nulla mezzi viene restituito.

Qui sto caricando un modello diverso in un controller diverso, in modo che sarebbe essere il problema ?? Ma anche se io sono carico, mi rimetto niente !!

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

E quando ho stampato il $ this-> Contatto gamma ricorsivamente, ho trovato il valore di "id" chiave vuota. In modo che spiega perché stavo ricevendo un valore vuoto.

Ora dato la mia situazione, come vorrei avere l'ultimo ID inserito, specifico per il controller di contatto?

È stato utile?

Soluzione

Quando si utilizza query() perdi un sacco di cakephp automagic fornisce. Usa save() invece.

In realtà, anche non c'è bisogno di caricare di contatto in questo caso. È possibile eseguire qualsiasi query dal regolatore di corrente con query() anche il salvataggio di qualsiasi altra tabella.

Si può anche evitare di usare loadModel() se il modello attuale è in qualche modo associato a contatto ($this->CurrentModel->AnotherOne->Contact->save(...)).

Altri suggerimenti

Se questo è MySQL è possibile utilizzare "SELECT dai contatti LAST_INSERT_ID ()" query per ottenere ultimo ID. o semplicemente "SELEZIONE LAST_INSERT_ID ()"

Per MSSQL è "SELECT @@ IDENTITY".

Questa bypassa qualsiasi soluzione in cakePHP però, così ci potrebbe essere una soluzione migliore.

È possibile ottenere last inserted record id da

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

In alternativa, è possibile utilizzare:

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

Questo metodo può essere trovato in torta / libs / modello / model.php on line 2775

Nota: Questa funzione non funziona se si esegue l'inserto di query manualmente

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top