【问题标题】:How to get the ID of the latest record just inserted?如何获取刚刚插入的最新记录的ID?
【发布时间】:2017-07-04 23:21:27
【问题描述】:

我正在尝试将数据插入到 2 个具有关系的不同表中……例如 studenthobby。所以student->hasOne(hobby)hobby->belongsTo(student)

我将一次性插入所有这些信息 ..以一种形式供您在执行以下操作时参考:one form submision to 2 controllers in laravel

现在我的问题是如何保存与学生相同的 id 的爱好? 如果我先保存student 然后另一种形式保存hobby 然后我可以很容易地先获得student_id 然后我可以使用用户ID 保存hobby

【问题讨论】:

  • 你说的是 MySQL 表还是 HTML 表,还是其他类型的表?
  • 抱歉忘了提..它的mysql表

标签: database forms laravel relationship


【解决方案1】:

insertGetId()怎么样?

$studentId = DB::table('students')->insertGetId(
    ['name' => 'John']
);

然后您可以将 te ID 用于与其他模型相关的任务:

DB::table('hobbies')->inset(
    ['student_id' => $studentId, 'hobby' => $hobby]
);

您可以在此处找到有关查询的更多信息:https://laravel.com/docs/5.4/queries

【讨论】:

    【解决方案2】:

    您可以提交给一个控制器。更轻松。然后做

    $student = Student::create([
        'name' => $request->name,
        ...
    ]);
    
    $hobby = Hobby::create([
        'student_id' => $student->id,
        'schedule' => $request->schedule,
        ...other data
    ]);
    

    【讨论】:

      【解决方案3】:

      谢谢大家的答案..我是通过getstudentid()方法完成的,并在创建学生之后传递了学生ID。

      【讨论】:

        【解决方案4】:

        您可以使用关系插入它,甚至无需关心 id。

        $hobby = auth()->user()->hobby()->create([
            'hobby_column1' => 'bla bla bla',
            'hobby_column2' => 'bla bla bla',
        ]);
        

        在示例中我使用auth()->user(),但它可以是User 类的任何实例。

        查看Laravel Docs 以更好地了解您可以对关系做什么。

        很明显,您可以在 $hobby 中获取 id,只需在创建后使用 $hobby->id

        【讨论】:

          猜你喜欢
          • 2011-07-31
          • 2011-06-17
          • 1970-01-01
          • 1970-01-01
          • 2018-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多