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

<?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,但我不知道如何获取它。

亲切的问候!


当前回答

对于Laravel,如果你插入一个新记录并调用$data->save(),这个函数执行一个insert查询并返回主键值(默认为id)。

你可以使用以下代码:

if($data->save()) {
    return Response::json(array('status' => 1, 'primary_id'=>$data->id), 200);
}

其他回答

对于Laravel,如果你插入一个新记录并调用$data->save(),这个函数执行一个insert查询并返回主键值(默认为id)。

你可以使用以下代码:

if($data->save()) {
    return Response::json(array('status' => 1, 'primary_id'=>$data->id), 200);
}

在save $data之后->save()。所有数据都被推入$data内。因为这是一个对象,当前行刚刚保存在$data中。所以last insertId将在$data->id中找到。

响应代码为:

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

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

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

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

使用雄辩的模型

$user = new Report();        
$user->email= 'johndoe@example.com';  
$user->save();
$lastId = $user->id;

使用查询生成器

$lastId = DB::table('reports')->insertGetId(['email' => 'johndoe@example.com']);

可选方法为:

$lastID = DB::table('EXAMPLE-TABLE')
                ->orderBy('id', 'desc')
                ->first();

$lastId = $lastProduct->id;

来自Laravel 5.8版本