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.aid
y 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::statement
oDB::insert
, hay otra manera:fuente
$id = DB::table('someTable')->insertGetId( ['field' => Input['data']);
timestamps
usandoinsertGetId
, por favor revisa aquíinsertGetId
solo 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$fillable
para 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$fillable
lista 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, elcreate
mé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
insertGetId
para insertar e insertarid
al mismo tiempoDe doc
Por
Model
Por
DB
Para 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->id
le dará la identificación insertada,Nota: Si el nombre de la columna de autoincremento es sno, entonces debe usar
$data->sno
y no$data->id
fuente
Después de guardar un registro en la base de datos, puede acceder a la identificación por
$data->id
fuente
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 últimoinsertId
se 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->id
es 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
$this
variable de constructor para lograr el "Último Id insertado usando Laravel Eloquent" (sin agregar ninguna columna adicional) en la función o controlador actual.fuente