laravel 8 - 通过查询构建器获取插入的数据 ID

时间:2021-03-29 19:39:12

标签: mysql database laravel laravel-8

这是我保存数据的方式

$data = array();

$data['date'] = $request->date;
$data['user_id'] = $request->user_id;
           
$save = DB::table('appointments')->insert($data);

if($save) {
    foreach($request->time as $time) {
        $data = array();

        $data['appointment_id'] = $save->id;
        $data['time'] = $time;

        DB::table('times')->insert($data);
    }
            
    $notification = array(
        'message' => 'Appoitment time created success',
        'alert-type' => 'success'
    );
}

但是对于另一个表与 appointments 表的连接

当我尝试使用此行中的方式保存数据时 $data['appointment_id'] = $save->id; 我得到并出错

<块引用>

尝试获取非对象的属性“id”

如何获取 appointments 插入成功 ID?

附注

$id = DB::table('appointments')->orderBy('id','desc')->first();

我不想用这种方式获取最后插入的数据 ID,如果多个用户尝试保存可能是错误的

1 个答案:

答案 0 :(得分:2)

您可以使用 insertGetId 获取已创建记录的 id

https://laravel.com/docs/8.x/queries#auto-incrementing-ids

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

--

注意

<块引用>

如果表有自增id,使用insertGetId方法插入一条记录,然后检索ID