首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Laravel Eloquent获取最后插入的Id

使用Laravel Eloquent获取最后插入的Id
EN

Stack Overflow用户
提问于 2014-01-13 14:02:24
回答 22查看 626.2K关注 0票数 362

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

代码语言:javascript
复制
<?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,但我不知道如何获取它。

致以亲切的问候!

EN

回答 22

Stack Overflow用户

发布于 2014-04-23 18:33:33

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

代码语言:javascript
复制
DB::getPdo()->lastInsertId();
票数 153
EN

Stack Overflow用户

发布于 2016-06-22 17:34:40

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

代码语言:javascript
复制
$id = DB::table('users')->insertGetId([
    'email' => 'john@example.com',
    'votes' => 0
]);

参考:https://laravel.com/docs/5.1/queries#inserts

票数 66
EN

Stack Overflow用户

发布于 2015-07-05 18:20:33

对于任何喜欢Jeffrey Way在他的Laracast5教程中使用Model::create()的人来说,他只是将请求直接发送到数据库中,而不是显式地在控制器中设置每个字段,并使用模型的$fillable进行大量赋值(对于任何使用这种方法的新手来说非常重要):我读到了很多使用insertGetId()的人,但不幸的是,这并不尊重$fillable白名单,所以在尝试插入_token和数据库中任何非字段的内容时,您会遇到错误,最终设置您想要过滤的内容,等等。因为我想使用批量赋值,并且在可能的情况下写更少的代码。幸运的是,Eloquent的create method只是包装了保存方法(上面的@xdazz引用了这个方法),所以您仍然可以提取最后创建的ID……

代码语言:javascript
复制
public function store() {

    $input = Request::all();
    $id = Company::create($input)->id;

    return redirect('company/'.$id);
}
票数 65
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21084833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档