You need to enable JavaScript to run this app. Laravel使用replicate()时如何返回复制后的数据而非布尔值
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用replicate()时如何返回复制后的数据而非布尔值

问题根因

你的代码问题出在对save()方法返回值的错误使用:Laravel Eloquent模型的save()方法返回值为布尔类型,仅代表本次保存操作是否成功,你将save()的返回值直接覆盖了原模型变量$transaction2,所以最终返回的是布尔值而非复制后的模型数据。

解决方法

不要将save()操作的返回值赋值给模型变量,保存完成后直接返回模型实例即可,示例代码如下:

$transaction = Transaction::find(1);

$transaction2 = $transaction->replicate()->fill(['status' => 1]);

// 仅执行保存操作,不要覆盖模型变量
$transaction2->save();

// 直接返回保存完成的模型实例
return $transaction2;

可选优化

如果你的数据表存在数据库层面自动生成的字段(比如自增主键、默认值字段、创建/更新时间戳等),想要确保拿到的是数据库落库后的最新数据,可以在保存后调用refresh()方法刷新模型:

$transaction = Transaction::find(1);
$transaction2 = $transaction->replicate()->fill(['status' => 1]);

if ($transaction2->save()) {
    // 同步数据库落库后的最新字段值
    return $transaction2->refresh();
}

// 可自行补充保存失败的处理逻辑
return response()->json(['error' => '数据保存失败'], 500);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:15:04