Laravel - updateOrCreate() - 完整性约束冲突

3
当我使用updateOrCreate()时,我遇到了以下错误:
完整性约束冲突:1062重复条目'8acda4a86b26d8dc016b3801b87236b0',用于关键字'uuid'
我的理解是,当唯一关键字已经存在于表中时,它不会尝试插入,而是会更新该行,那么为什么我会遇到这个错误?
在我的MySQL数据库中,列uuid设置为唯一。
列json是一个JSON列,并设置为NOT NULL。
以下是我的代码:
TransactionJSON::updateOrCreate(
   ['uuid' => $json->payload->id],
   ['json' => $json_merge]
);
2个回答

1

在我的情况下,

updateOrCreate或firstOrCreate不会检查已删除的数据。

请使用withTrashed():

TransactionJSON::withTrashed()->updateOrCreate(
  ["uuid" => $json->payload->id],
  ["json" => $json_merge]
);

我刚遇到了这个问题,这解决了我的问题。谢谢。 - dlan

0
在你的模型TransactionJSON中,你应该将uuid设置为主键。
protected $primaryKey = 'uuid';

这就是 Laravel 如何通过 uuid 更新表格,否则 Laravel 将通过 id(默认主键)查找条目,如果没有 id,则会创建一个。了解更多 https://laravel.com/docs/5.8/eloquent


即使我已经有一个主键列了?我有一个自动递增的列名为id作为主键。 - Dally

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接