【问题标题】:laravel 8 : insert method get last insert id in eloquent (İnsert Method)laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)
【发布时间】: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

标签: laravel laravel-8


【解决方案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
猜你喜欢
  • 2015-03-08
  • 2014-01-31
  • 2011-06-01
  • 2023-03-16
  • 2011-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多