我目前正在使用下面的代码在表中插入数据:
<?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,但我不知道如何获取它。
致以亲切的问候!
发布于 2014-04-23 18:33:33
xdazz在这种情况下是正确的,但为了将来可能使用DB::statement
或DB::insert
的访问者的利益,还有另一种方法:
DB::getPdo()->lastInsertId();
发布于 2016-06-22 17:34:40
如果该表具有自动递增的id,请使用insertGetId方法插入一条记录,然后检索该ID:
$id = DB::table('users')->insertGetId([
'email' => 'john@example.com',
'votes' => 0
]);
发布于 2015-07-05 18:20:33
对于任何喜欢Jeffrey Way在他的Laracast5教程中使用Model::create()
的人来说,他只是将请求直接发送到数据库中,而不是显式地在控制器中设置每个字段,并使用模型的$fillable
进行大量赋值(对于任何使用这种方法的新手来说非常重要):我读到了很多使用insertGetId()
的人,但不幸的是,这并不尊重$fillable
白名单,所以在尝试插入_token和数据库中任何非字段的内容时,您会遇到错误,最终设置您想要过滤的内容,等等。因为我想使用批量赋值,并且在可能的情况下写更少的代码。幸运的是,Eloquent的create
method只是包装了保存方法(上面的@xdazz引用了这个方法),所以您仍然可以提取最后创建的ID……
public function store() {
$input = Request::all();
$id = Company::create($input)->id;
return redirect('company/'.$id);
}
https://stackoverflow.com/questions/21084833
复制相似问题