Obtener la última Identificación del inserto
-
26-09-2019 - |
Pregunta
Hola estoy usando CakePHP 1.3 y no soy capaz de retreive Identificación de la última fila insertada. De hecho, me estoy usando $ this-> Modelo-> ID es posible recuperar el último ID insertado, pero no estoy en condiciones de obtener el id. Cuando trató de comprobar cuál es el tipo de retorno, que dice como bool (false), que no se devuelve medios.
Aquí estoy cargando un modelo diferente en un controlador diferente, por lo que habría que ser el problema ?? Pero aunque soy de carga, que regrese nada !!
$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;
Y cuando imprimí los $ this-> Contacto matriz de forma recursiva, he encontrado el valor de "id" clave vacía. Eso explica por qué yo estaba recibiendo un valor vacío.
Ahora bien, dada mi situación, ¿cómo iba a conseguir el último ID insertado, específico para el controlador de contacto?
Solución
Cuando se utiliza query()
de que pierda una gran cantidad de cakephp automagic ofrece. Uso save()
lugar.
De hecho, incluso no es necesario cargar de contacto en este caso. Puede ejecutar cualquier consulta desde el controlador actual con query()
incluso guardar en cualquier otra tabla.
También puede evitar el uso de loadModel()
si su modelo actual es de alguna manera asociado con el contacto ($this->CurrentModel->AnotherOne->Contact->save(...)
).
Otros consejos
Creo que lo que desea hacer:
$this->getLastInsertID();
Si esto es MySQL podría utilizar "Seleccionar de los contactos LAST_INSERT_ID ()" consulta para obtener la última ID. o simplemente "SELECT LAST_INSERT_ID ()"
Para MSSQL es "SELECT @@ IDENTITY".
Esto evita cualquier solución en CakePHP sin embargo, por lo que podría ser una solución mejor.
Usted puede obtener por last inserted record id
echo $this->ModelName->getLastInsertID();
Como alternativa, se puede utilizar:
echo $this->ModelName->getInsertID();
Estos métodos se puede encontrar en la torta / libs / modelo / model.php en la línea 2775
Nota: Esta función no está disponible si ejecuta la consulta de inserción manualmente