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
相关产品推荐
相关产品推荐

