Prendi l'ultimo inserto id
-
26-09-2019 - |
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?
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
Penso che si desidera solo fare:
$this->getLastInsertID();
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