php - registro - Obtenga la última identificación insertada usando Laravel Eloquent
obtener el ultimo registro eloquent laravel (22)
**** Para Laravel ****
En primer lugar crear un objeto, a continuación, establecer el valor de los atributos de ese objeto, a continuación, guardar el registro de objeto, y luego obtener el último ID insertado. como
$user = new User();
$user->name = ''John'';
$user->save();
// Ahora obteniendo la última identificación insertada
$insertedId = $user->id;
echo $insertedId ;
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 identificación insertada pero no sé cómo obtenerla.
¡Saludos cordiales!
Aquí hay un ejemplo:
public static function saveTutorial(){
$data = Input::all();
$Tut = new Tutorial;
$Tut->title = $data[''title''];
$Tut->tutorial = $data[''tutorial''];
$Tut->save();
$LastInsertId = $Tut->id;
return Response::json(array(''success'' => true,''last_id''=>$LastInsertId), 200);
}
Después
$data->save()
$data->id
le dará la identificación insertada,
Nota: Si el nombre de la columna es autoincrement sno se debe usar $data->sno
y no $data->id
Después de save
, $data->id
debe ser la última ID insertada.
return Response::json(array(''success'' => true, ''last_insert_id'' => $data->id), 200);
Para la versión actualizada de laravel intente esto
return response()->json(array(''success'' => true, ''last_insert_id'' => $data->id), 200);
Después de guardar un registro en la base de datos, puede acceder a id por $data->id
return Response::json([''success'' => true, ''last_insert_id'' => $data->id], 200)
Después de guardar $data->save()
. Todos los datos se insertan dentro de $data
. Como este es un objeto y la fila actual se guarda recientemente dentro de $data
. por lo que last insertId
se encontrará dentro de $data->id
.
El código de respuesta será:
return Response::json(array(''success'' => true, ''last_insert_id'' => $data->id), 200);
Después de guardar el modelo, la instancia inicializada tiene el id:
$report = new Report();
$report->user_id = $request->user_id;
$report->patient_id = $request->patient_id;
$report->diseases_id = $request->modality;
$isReportCreated = $report->save();
return $report->id; // this will return the saved report id
En Laravel 5.2 lo haría lo más limpio posible:
public function saveContact(Request $request, Contact $contact)
{
$create = $contact->create($request->all());
return response()->json($create->id, 201);
}
En laravel 5: puedes hacer esto:
use App/Http/Requests/UserStoreRequest;
class UserController extends Controller {
private $user;
public function __construct( User $user )
{
$this->user = $user;
}
public function store( UserStoreRequest $request )
{
$user= $this->user->create([
''name'' => $request[''name''],
''email'' => $request[''email''],
''password'' => Hash::make($request[''password''])
]);
$lastInsertedId= $user->id;
}
}
Esto funcionó para mí en laravel 4.2
$id = User::insertGetId([
''username'' => Input::get(''username''),
''password'' => Hash::make(''password''),
''active'' => 0
]);
Para Laravel, si inserta un nuevo registro y llama a $data->save()
esta función ejecuta una consulta INSERTAR y devuelve el valor de la clave principal (es decir, id por defecto).
Puedes usar el siguiente código:
if($data->save()) {
return Response::json(array(''status'' => 1, ''primary_id''=>$data->id), 200);
}
Para cualquier persona que también le guste cómo Jeffrey Way usa Model::create()
en sus tutoriales de Laracasts 5, donde simplemente envía la Solicitud directamente a la base de datos sin configurar explícitamente cada campo en el controlador, y utilizando los $fillable
del modelo para la asignación masiva muy importante, para cualquier persona nueva y que use de esta manera): leo a mucha gente que usa insertGetId()
pero desafortunadamente esto no respeta la lista blanca de $fillable
así que obtendrás errores al intentar insertar _token y todo lo que no sea un campo en la base de datos, terminan configurando las cosas que desea filtrar, etc. Eso me desanimado, porque quiero usar la asignación de masas y en general escribir menos código cuando sea posible. Afortunadamente elocuente de create
método solo envuelve el método save (lo @xdazz antes citada), por lo que aún puede tirar de la última ID creado ...
public function store() {
$input = Request::all();
$id = Company::create($input)->id;
return redirect(''company/''.$id);
}
Para obtener la última identificación insertada en la base de datos puede usar
$data = new YourModelName;
$data->name = ''Some Value'';
$data->email = ''[email protected]'';
$data->save();
$lastInsertedId = $data->id;
aquí $ lastInsertedId le dará la última identificación de incremento automático insertada.
Puedes hacerlo:
$result=app(''db'')->insert("INSERT INTO table...");
$lastInsertId=app(''db'')->getPdo()->lastInsertId();
Si la tabla tiene un id de incremento automático, utilice el método insertGetId para insertar un registro y luego recuperar el ID:
$id = DB::table(''users'')->insertGetId([
''email'' => ''[email protected]'',
''votes'' => 0
]);
Use insertGetId
para insertar y obtener la id
insertada al mismo tiempo
De doc
Si la tabla tiene un id de incremento automático, utilice el método insertGetId para insertar un registro y luego recuperar el ID:
Por Model
$id = Model::insertGetId(["name"=>"Niklesh","email"=>"[email protected]"]);
Por DB
$id = DB::table(''users'')->insertGetId(["name"=>"Niklesh","email"=>"[email protected]"]);
Para obtener más detalles: doc
Aquí es cómo podemos obtener la última ID insertada en Laravel 4
public function store()
{
$input = Input::all();
$validation = Validator::make($input, user::$rules);
if ($validation->passes())
{
$user= $this->user->create(array(
''name'' => Input::get(''name''),
''email'' => Input::get(''email''),
''password'' => Hash::make(Input::get(''password'')),
));
$lastInsertedId= $user->id; //get last inserted record''s user id value
$userId= array(''user_id''=>$lastInsertedId); //put this value equal to datatable column name where it will be saved
$user->update($userId); //update newly created record by storing the value of last inserted id
return Redirect::route(''users.index'');
}
return Redirect::route(''users.create'')->withInput()->withErrors($validation)->with(''message'', ''There were validation errors.'');
}
Usando el modelo elocuente
$user = new Report();
$user->email= ''[email protected]'';
$user->save();
$lastId = $user->id;
Usando Query Builder
$lastId = DB::table(''reports'')->insertGetId([''email'' => ''[email protected]'']);
Usando el modelo elocuente
use App/Company;
public function saveDetailsCompany(Request $request)
{
$createcompany=Company::create([''nombre''=>$request->input(''name''),''direccion''=>$request->input(''address''),''telefono''=>$request->input(''phone''),''email''=>$request->input(''emaile''),''giro''=>$request->input(''type'')]);
// Last Inserted Row ID
echo $createcompany->id;
}
Usando Query Builder
$createcompany=DB::table(''company'')->create([''nombre''=>$request->input(''name''),''direccion''=>$request->input(''address''),''telefono''=>$request->input(''phone''),''email''=>$request->input(''emaile''),''giro''=>$request->input(''type'')]);
echo $createcompany->id;
Para obtener más métodos para obtener el último ID de fila insertada en Laravel: http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-inserted-row-id-in-laravel
xdazz es correcto en este caso, sino para el beneficio de los futuros visitantes que puedan estar utilizando DB::statement
o DB::insert
, hay otra manera:
DB::getPdo()->lastInsertId();
$objPost = new Post;
$objPost->title = ''Title'';
$objPost->description = ''Description'';
$objPost->save();
$recId = $objPost->id; // If Id in table column name if other then id then user the other column name
return Response::json([''success'' => true,''id'' => $recId], 200);
public function store( UserStoreRequest $request ) {
$input = $request->all();
$user = User::create($input);
$userId=$user->id
}