You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8使用replicate复制模型后如何获取新生成模型的ID

问题根因
  • replicate() 方法执行后会生成一个未入库的新模型副本,此时这个副本还未被分配数据库自增主键ID
  • 模型的save()、push()方法返回值都是布尔值,仅用来标识保存操作是否执行成功,不会返回模型实例本身。你采用链式调用直接把方法返回值赋值给$newSetting,拿到的自然只是布尔值true,无法获取新记录ID。
正确实现方式

不要把save/push的返回值直接赋值给新模型变量,分两步操作即可:先拿到replicate生成的副本实例,再执行保存操作,保存完成后副本实例会自动注入新生成的主键ID,直接读取即可。

$id = $request->id;
// 查询原记录
$originalData = Setting::find($id);
// 生成未入库的模型副本
$newSetting = $originalData->replicate();
// 执行保存操作
$newSetting->save();

// 直接读取新记录主键ID
$newId = $newSetting->id;

如果需要连同模型关联数据一起复制,把save()替换为push()即可,逻辑完全一致:

$newSetting = $originalData->replicate();
// 连同关联数据一起保存
$newSetting->push();
// 同样可以直接获取新ID
$newId = $newSetting->id;

内容的提问来源于stack exchange,提问作者Cohchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:21:58