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

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

亲切的问候!


当前回答

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

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

其他回答

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

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

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

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

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

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

你也可以这样尝试:

public function storeAndLastInrestedId() {
    $data = new ModelName();
    $data->title = $request->title;
    $data->save();

    $last_insert_id = $data->id;
    return $last_insert_id;
}

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

响应代码为:

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