ultimo registro recien obtener last insertado php database laravel eloquent

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();



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 }