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

Laravel使用updateOrCreate方法后如何判断是插入还是更新操作?

问题解答

可以直接判断,不需要额外自定义复杂逻辑。
Laravel 内置的updateOrCreate方法返回的 Eloquent 模型实例,本身就包含了标识操作类型的属性:

  • 你可以直接访问模型的wasRecentlyCreated公共属性:值为true代表本次执行的是插入操作,值为false代表本次执行的是更新操作。

直接使用的代码示例:

$example = $this->exampleRepository->store($validatedData);

if ($example->wasRecentlyCreated) {
    // 执行新增对应的逻辑
} else {
    // 执行更新对应的逻辑
}

如果你希望实现你示例中justNewlyCreated()方法的调用效果,只需要在你的MyExampleModel模型类中添加如下自定义方法即可:

// 写在 MyExampleModel 类内部
public function justNewlyCreated(): bool
{
    return $this->wasRecentlyCreated;
}

添加后你写的伪代码就可以直接正常运行。

补充说明:wasRecentlyCreated是 Eloquent 模型自带的属性,框架在执行插入类操作(包括create、firstOrCreate、updateOrCreate等)时会自动为新插入的模型实例将该属性设为true,无需你手动维护,也不需要依赖ID、创建时间等字段做额外判断,完全符合你仅判断操作类型的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:48:05