一段使用updateOrCreate
方法的 Laravel 代码:
TransactionJSON::updateOrCreate(
['uuid' => $json->payload->id],
['json' => $json_merge]
);
运行后报错:
"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '8acda4a86b26d8dc016b3801b87236b0' for key 'uuid'"
很明显是唯一索引遇到了重复数据,按理说updateOrCreate
方法是不应该出现这种情况啊,因为这个方法是查询到数据就更新,不存在才创建。
仔细检查了一下数据库,发现原来是软删除带来的问题,数据库中确实存在着重复记录,不过是被软删除的。
再看了下文档,其实 Laravel 已经考虑到这种情况了,提供了一个函数:withTrashed()
,使用这个函数后程序会在查询时包含软删除模型。因此将文章开头的代码改成下面的形式就可以正确运行了:
TransactionJSON::withTrashed()->updateOrCreate(
["uuid" => $json->payload->id],
["json" => $json_merge]
);
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Laravel 使用 updateOrCreate 方法时提示:Integrity constraint violation: 1062 Duplicate entry xxx for key ‘xxx’ 的疑问和解决办法。
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Laravel 使用 updateOrCreate 方法时提示:Integrity constraint violation: 1062 Duplicate entry xxx for key ‘xxx’ 的疑问和解决办法。