gpt4 book ai didi

php - 使用 updateOrCreate() 时重复输入

转载 作者:行者123 更新时间:2023-12-05 03:37:06 27 4
gpt4 key购买 nike

我正在使用(最新的)Lumen,这可能是我出错的罪魁祸首。

当我使用 updateOrCreate() 时:

            User::updateOrCreate(
['username' => $user->username],
[
'email' => $user->email,
'password' => $user->password,
'foreign_id' => $user->foreign_id,
'client_id' => $user->client_id,
'status' => $user->active,
'user_level' => (integer) $user->user_level
]
);

在我的一个模型上,我收到 mysql 错误:

"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'user@name.com' for key 'users_username_unique' (SQL: insert into `users` (`username`,

因为它试图为我的唯一列之一(用户名)插入重复值。

所以,函数本身存在,我没有得到任何错误,它适用于第一次插入,但是一旦它达到检查数据库条目是否存在的功能并且只需要更新它,它仍然想要创建新条目,但是重复值。

Laravel 本身有 updateOrCreate(): https://laravel.com/docs/8.x/eloquent#upserts在其 Eloquent 。 Lumen 中的 Eloquent 是否在某种程度上削弱了这个功能?

翻看Laravel或Lumen的代码,没找到这个函数的实现,最接近的是updateOrFail()...

最佳答案

User::updateOrCreate(
[
'username' => $user->username,
'foreign_id' => $user->foreign_id
],

[
'email' => $user->email,
'password' => $user->password,
'client_id' => $user->client_id,
'status' => $user->active,
'user_level' => (integer) $user->user_level
])

//第一个数组必须包含所有主键/复合键,使其成为唯一记录

关于php - 使用 updateOrCreate() 时重复输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69435496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com