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

时间:2017-02-16 02:49:15

标签: database forms laravel relationship

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

我正在一次性插入所有这些信息..在一个表格中供您参考,例如:one form submision to 2 controllers in laravel

现在我的问题是如何保存与学生同名的爱好? 如果我先保存student,然后另一个表单保存hobby,那么我可以先轻松获取student_id,然后我可以使用用户ID保存hobby

4 个答案:

答案 0 :(得分:1)

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

$student = Student::create([
    'name' => $request->name,
    ...
]);

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

答案 1 :(得分: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 :(得分:0)

对于答案的人来说..我是通过getstudentid()方法完成的,并在创建学生后传递学生ID ...

答案 3 :(得分:-1)

您可以使用关系插入它,而无需关心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即可。