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?

¿Fue útil?

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top