laravel 8 - 通过查询生成器获取插入的数据 id

Posted

技术标签:

【中文标题】laravel 8 - 通过查询生成器获取插入的数据 id【英文标题】:laravel 8 - Get inserted data id via query builder 【发布时间】:2021-06-25 20:36:47 【问题描述】:

这是我保存数据的方式

$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?

PS

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

我不想通过这种方式获取最后一个插入数据 ID,如果多个用户尝试保存可能会出错

【问题讨论】:

insertGetId 谢谢您的工作,您可以将其添加为答案,以便我可以标记为 paa $id = DB::table('appointments')->insertGetId($data);将此添加为答案 这能回答你的问题吗? Laravel: get last Insert id from query builder 它与链接的问题没有足够的不同,需要自己的答案。 This answer 特别是我所指的文档所描述的内容 【参考方案1】:

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

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

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

--

注意

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

【讨论】:

以上是关于laravel 8 - 通过查询生成器获取插入的数据 id的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 8 中使用 PostgreSQL 中的子查询通过 group by 子句获取行值?

laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)

我可以在 Facadesdb 插入中获取主键以供直接使用 - Laravel 8

Laravel 从查询生成器获取特定列

Laravel 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作

如何在 laravel 查询生成器上获取主键名称