Actualmente estoy usando el siguiente código para insertar datos en una tabla:
<?php
public function saveDetailsCompany()
{
$post = Input::All();
$data = new Company;
$data->nombre = $post['name'];
$data->direccion = $post['address'];
$data->telefono = $post['phone'];
$data->email = $post['email'];
$data->giro = $post['type'];
$data->fecha_registro = date("Y-m-d H:i:s");
$data->fecha_modificacion = date("Y-m-d H:i:s");
if ($data->save()) {
return Response::json(array('success' => true), 200);
}
}
Quiero devolver la última ID insertada pero no sé cómo obtenerla.
¡Saludos cordiales!

0. En mi caso, la identificación era una cadena (UUID) y para que esto funcione tuve que agregarpublic $incrementing = false;mi modelo.aidy lo configuré, ¡$incrementing = false;pero no regresa también!xdazz tiene razón en este caso, pero para el beneficio de futuros visitantes que podrían estar usando
DB::statementoDB::insert, hay otra manera:fuente
$id = DB::table('someTable')->insertGetId( ['field' => Input['data']);timestampsusandoinsertGetId, por favor revisa aquíinsertGetIdsolo funciona si las columnas de id se llaman "id".Para cualquiera a quien también le guste cómo usa Jeffrey Way
Model::create()en sus tutoriales de Laracasts 5, donde simplemente envía la Solicitud directamente a la base de datos sin establecer explícitamente cada campo en el controlador y usa los modelos$fillablepara la asignación masiva (muy importante, para cualquier persona nueva y que use de esta manera): leí a muchas personas que usan,insertGetId()pero desafortunadamente esto no respeta la$fillablelista blanca, por lo que obtendrá errores al intentar insertar _token y cualquier cosa que no sea un campo en la base de datos, termine configurando las cosas que desea filtro, etc. Eso me decepcionó, porque quiero usar la asignación masiva y, en general, escribir menos código cuando sea posible. Afortunadamente, elcreatemétodo de Eloquent simplemente envuelve el método de guardar (lo que @xdazz citó anteriormente), por lo que aún puede extraer la última ID creada ...fuente
$new = Company::create($input);return redirect('company/'.$new->id);Si la tabla tiene una identificación de incremento automático, use el método insertGetId para insertar un registro y luego recuperar la ID:
Consulte: https://laravel.com/docs/5.1/queries#inserts
fuente
**** Para Laravel ****
Primero cree un objeto, luego establezca el valor de los atributos para ese objeto, luego guarde el registro del objeto y luego obtenga la última identificación insertada. como
// Ahora obteniendo la última identificación insertada
fuente
En laravel 5: puedes hacer esto:
fuente
Aquí hay un ejemplo:
fuente
Esto funcionó para mí en laravel 4.2
fuente
Así es como podemos obtener la última identificación insertada en Laravel 4
fuente
Use
insertGetIdpara insertar e insertaridal mismo tiempoDe doc
Por
ModelPor
DBPara más detalles: https://laravel.com/docs/5.5/queries#inserts
fuente
Después de guardar el modelo, la instancia inicializada tiene el id:
fuente
Para insertar ()
Ejemplo:
fuente
En Laravel 5.2 lo haría lo más limpio posible:
fuente
Después
$data->idle dará la identificación insertada,Nota: Si el nombre de la columna de autoincremento es sno, entonces debe usar
$data->snoy no$data->idfuente
Después de guardar un registro en la base de datos, puede acceder a la identificación por
$data->idfuente
Para Laravel, si inserta un nuevo registro y llama a
$data->save()esta función, ejecuta una consulta INSERT y devuelve el valor de la clave primaria (es decir, id por defecto).Puedes usar el siguiente código:
fuente
fuente
Puedes hacerlo:
fuente
Para obtener la última identificación insertada en la base de datos, puede usar
aquí $ lastInsertedId le dará la última identificación de incremento automático insertada.
fuente
El camino más corto es probablemente una llamada del
refresh()modelo:fuente
Aunque esta pregunta es un poco anticuada. Mi solución rápida y sucia se vería así:
Pero supongo que es vulnerable a las condiciones de carrera en bases de datos altamente frecuentadas.
fuente
También puedes intentarlo así:
fuente
Usando modelo elocuente
Usar el generador de consultas
fuente
Después de guardar
$data->save(). Todos los datos se introducen en el interior$data. Como se trata de un objeto y la fila actual se acaba de guardar recientemente dentro$data. así que el últimoinsertIdse encontrará dentro$data->id.El código de respuesta será:
fuente
El método opcional será:
Fuente de la versión 5.8 de Laravel
fuente
Puede obtener la última identificación insertada con el mismo objeto al que llama método de guardar;
Entonces simplemente puedes escribir:
fuente
Puede recuperar fácilmente el último ID de registro insertado
Es un truco increíble para obtener Id del último registro insertado en el DB.
fuente
$user->ides suficiente después de crear para obtener la identificación insertada.fuente
Usando modelo elocuente
Usar el generador de consultas
Para obtener más métodos para obtener la última identificación de fila insertada en Laravel: http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-inserted-row-id-in-laravel
fuente
Puede usar la
$thisvariable de constructor para lograr el "Último Id insertado usando Laravel Eloquent" (sin agregar ninguna columna adicional) en la función o controlador actual.fuente