laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)
Posted
技术标签:
【中文标题】laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)【英文标题】:laravel 8 : insert method get last insert id in eloquent (İnsert Method) 【发布时间】:2021-10-22 01:06:20 【问题描述】:我正在使用“Laravel 中的 Eloquent ORM”执行数据库操作。我只想取数据库中最后一个插入id(不是最大id)。
我在 laravel Eloquent ORM 中搜索获取最后一个插入 id,我得到了以下链接 (Laravel, get last insert id using Eloquent),它是指从以下函数“$data->save()”获取最后一个插入 id。
但我需要得到
"Model::insert($data)";
我的查询:
$insert = Product::insert($alldata);
if ($insert)
return response()->json([
'success' => 'Ürün başarıyla Eklendi.',
'id' => ???????
]);
如何检索最后插入的 id?
【问题讨论】:
这是您可以使用文档找到的内容,即使在入门部分也是如此。但是,好吧,你已经得到了答案。下次至少尝试查看文档内部。 你怎么知道我没有阅读文档??? 我怎么知道。因为您不使用文档显示的 Eloquent 模型。插入和检索模型是基础,属于 ORM 的一部分:laravel.com/docs/8.x/eloquent#inserts。 【参考方案1】:$insert = Product::create($alldata);
$insert->id
保存插入项的 id。
基本上,您的 $insert
变量中包含您插入的项目的整个集合。
【讨论】:
if ($insert) return response()->json([ 'success' => 'Ürün başarıyla Eklendi.', 'id' =>$insert->id ]);这样我就无法将 Id 发送到刀片页面 不,这是您的回复。如果要将其传递给视图,则需要使用视图表单将其作为参数发送。您的问题是关于 API 响应,或者至少这是您想要实现的目标。 我的查询:$insert = Product::insert($alldata);这不是我的查询: $insert = Product::create($alldata);好吗? 根据上面的评论,您还有其他解决方案吗? 在我的答案中使用查询并按照我提到的方式访问 id。您的问题是关于检索您创建的元素的 id 并将其放入您的 json 响应中,而我的回答完全基于此。【参考方案2】:您也可以使用 insertGetId() 函数
$id = DB::table('table_name')-> insertGetId($alldata);
【讨论】:
正确,但是当 Eloquent 在正确使用时返回带有 id 的模型时过度杀伤。 同意你@Gert B以上是关于laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)的主要内容,如果未能解决你的问题,请参考以下文章
如果列中不存在,则使用 Laravel eloquent 插入数据
仅当一个字段作为数组提供时,Laravel Eloquent 才插入多条记录
Laravel/Eloquent 建议覆盖 trait 属性?