我目前正在使用下面的代码在一个表中插入数据:

<?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);
    }
}

我想返回插入的最后一个ID,但我不知道如何获取它。

亲切的问候!


当前回答

获取数据库中最后插入的id 你可以使用

$data = new YourModelName;
$data->name = 'Some Value';
$data->email = 'abc@mail.com';
$data->save();
$lastInsertedId = $data->id;

这里$lastInsertedId会给你最后插入的自动增量id。

其他回答

保存模型后,初始化实例的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

虽然这个问题有点过时了。我的快速解决方案是这样的:

$last_entry = Model::latest()->first();

但我猜它很容易受到频繁使用的数据库的竞争条件的影响。

您可以很容易地获取最后插入的记录Id

$user = User::create($userData);
$lastId = $user->value('id');

从DB中最后插入的记录中获取Id是一个很棒的技巧。

将记录保存到数据库后,可以通过$data->id访问id

return Response::json(['success' => true, 'last_insert_id' => $data->id], 200)

如果表有一个自动递增的id,使用insertGetId方法插入一条记录,然后检索id:

$id = DB::table('users')->insertGetId([
    'email' => 'john@example.com',
    'votes' => 0
]);

参考:https://laravel.com/docs/5.1/queries插入