如何获取刚刚插入的最新记录的ID?

Posted

技术标签:

【中文标题】如何获取刚刚插入的最新记录的ID?【英文标题】:How to get the ID of the latest record just inserted? 【发布时间】: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表 【参考方案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

【讨论】:

以上是关于如何获取刚刚插入的最新记录的ID?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle怎么得到刚刚新插入数据库那条记录的id

插入后获取新记录的ID

如何在mssql中获取最新自增ID的值

如何从此 ADODB.Recordset 中获取插入 ID?

你好,我的mongoDB素要获取最新插入记录的id,请问该怎么实现呢?请帮帮小弟,谢谢了

记录mybatis获取刚刚插入到数据库的数据的id