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

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

亲切的问候!


当前回答

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

其他回答

xdazz在这种情况下是正确的,但为了将来可能使用DB::statement或DB::insert的访问者的利益,还有另一种方法:

DB::getPdo()->lastInsertId();
public function store( UserStoreRequest $request ) {
    $input = $request->all();
    $user = User::create($input);
    $userId=$user->id 
}

$data->save()

$data->id会给你插入的id,

注意:如果您的自增列名是sno,那么您应该使用 $data->sno而不是$data->id

使用雄辩的模型

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

使用查询生成器

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

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

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

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