【问题标题】:How to get last insert id in Eloquent ORM laravel如何在 Eloquent ORM laravel 中获取最后一个插入 ID
【发布时间】:2015-03-08 13:17:51
【问题描述】:

我正在使用“Laravel 中的 Eloquent ORM”执行数据库操作。我只想取数据库中最后一个插入id(不是最大id)。

我在 laravel Eloquent ORM 中搜索获取最后一个插入 ID,我得到了以下链接 (Laravel, get last insert id using Eloquent),它指的是从以下函数“$data->save()”获取最后一个插入 ID。

但我需要得到

"Model::create($data)";

我的查询:

GeneralSettingModel::create($GeneralData);

User::create($loginuserdata);

如何检索最后插入的 id?

【问题讨论】:

标签: php laravel eloquent


【解决方案1】:

就像文档说的:Insert, update, delete

"您也可以使用 create 方法将新模型保存在单个 线。 插入的模型实例将从 方法。但是,在这样做之前,您需要指定一个 与所有 Eloquent 模型一样,模型上的可填充或受保护属性 防止批量分配。

保存或创建使用自动递增 ID 的新模型后, 您可以通过访问对象的 id 属性来检索 ID:"

$insertedId = $user->id;

所以在您的示例中:

$user = User::create($loginuserdata);
$insertedId = $user->id;

然后在table2上

$input['table2_id'] = $insertedId;
table2::create($input);

【讨论】:

  • 值得注意的是,该文档具有误导性,因为显示的第一个方法是 ->save();,而 IMO 并不足以解释 save() 返回一个布尔值而 only 插入、更新和删除返回实例。特别是因为 in 说“在保存或创建之后”
【解决方案2】:

**** 对于 Laravel ****

$user = new User();

$user->name = 'John';

$user->save();

//Getting Last inserted id

$insertedId = $user->id;

【讨论】:

  • $lastInsertedID = DB::table('users') ->insert(array('email_id' => $email_id, 'name' => $name)) ->lastInsertId();
  • 感谢您的回答,但我解决了我的问题。这是关于primaryKey的。我在模型中更改了主键。所以我没有得到最后一个ID。将primarykey更改为id后,它起作用了。
  • 感谢您的回复
【解决方案3】:
$lastId = User::create($loginuserdata)->id;

【讨论】:

    【解决方案4】:

    正如其他人在我之前所说,您可以使用检索 id

    $model->id;
    

    但前提是您使用 eloquent 的标准命名约定。如果要为 primaryKey 列使用其他名称,例如:

    class Users extends Model{
        $primaryKey = 'userid';
    }
    

    您可以通过调用检索最后插入的 id

    $model->userid;
    

    描述在:https://laravel.com/docs/master/eloquent#eloquent-model-conventions 哪里可以找到:

    Eloquent 还会假设每个表都有一个主键列 命名标识。您可以定义一个 $primaryKey 属性来覆盖它 约定。

    此外,Eloquent 假设主键是递增的 整数值,这意味着默认情况下主键将是 自动转换为 int。如果您希望使用非递增或 非数字主键,您必须设置公共 $incrementing 将模型上的属性设置为 false。

    【讨论】:

    • 亲爱的@Krzysiek Grzembski 我需要在我的控制器中使用它。我在模型中更改了它,因为你在模型中编写了它。但是现在 $model->userid;是可访问的。我需要它在我的控制器中。请指导...
    • @Raham 请查看我更新的答案。没有任何代码,很难说出你的问题。
    • 实际上我解决了我的问题。我的问题是如何从表中检索最后插入的一个。现在我查找了你如何返回最后一个插入的答案。你在哪里定义 $model ...
    • 问题是触发器生成的keys
    【解决方案5】:

    您可以像这样将数据包装在 insertGetId() 方法中

    $id = DB::table('table')->insertGetId( $data );
    

    在这种情况下,数组 $data 看起来像这样

    $data = [ 'field' => 'data' , 'field' => 'data' ];
    

    如果您使用的是 DB 外观,您可以将 lastInsertID() 方法附加到您的查询中。

    $lastInsertedID = DB::table('table')->insert( $data )->lastInsertId();
    

    【讨论】:

    • 值得注意的是,insertGetId 仅在列实际命名为 id 时才有效。
    【解决方案6】:

    你可以这样做,

    public function store(Request $request,ModelName $obj)
    {
            $lastInsertedId = $obj->create($request->all())->id;
    
    }
    

    希望这会对你有所帮助。

    【讨论】:

      【解决方案7】:
      $user = (new user)->create($request->all()) ;
      
              \Session::flash('message', 'Thanks , Your record No (' .$user->id . ') has been Successfully added');
      

      这是我的解决方案。我返回插入的对象并获取其 ID 或任何其他属性。

      【讨论】:

        【解决方案8】:

        此代码适用于 Laravel 5.3:

        $upstatus = User::create($status);
        return response()->json($upstatus);
        

        我被称为data.id的用户页面/网站

        【讨论】:

          【解决方案9】:

          这是一个雄辩的模型:

          $user = new Reports();        
          $user->email= 'david@example.com';  
          $user->save();
          $lastInsertId = $user->id;
          

          使用查询生成器的解决方案:

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

          【讨论】:

            【解决方案10】:

            这是我的尝试:

            $model_ins = Model::orderBy('id', 'desc')->take(1)->first();
            

            并使用$model_ins->id

            【讨论】:

              【解决方案11】:

              这是一种更简单的方法,适用于您插入的所有方式:

              DB::getPdo()->lastInsertId()
              

              【讨论】:

                猜你喜欢
                • 2021-10-22
                • 1970-01-01
                • 2014-01-31
                • 1970-01-01
                • 1970-01-01
                • 2019-05-27
                • 2018-04-06
                相关资源
                最近更新 更多