我正在使用(最新的)流明,这可能是我的错误的罪魁祸首。
当我使用 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
]
);
Run Code Online (Sandbox Code Playgroud)
在我的其中一个模型上,我收到 mysql 错误:
"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'user@name.com' for key 'users_username_unique' (SQL: insert into `users` (`username`,
Run Code Online (Sandbox Code Playgroud)
因为它尝试为我的唯一列之一(用户名)插入重复值。
因此,函数本身存在,我没有收到任何错误,并且它适用于第一次插入,但是一旦它达到检查数据库条目是否存在并且只需要更新它的功能,它仍然想要创建新条目,但具有重复的值。
Laravel 本身在其 Eloquent 中有 updateOrCreate():https ://laravel.com/docs/8.x/eloquent#upserts 。Lumen 中的 Eloquent 是否会以某种方式削弱此功能?
在查看 Laravel 或 Lumen 的代码时,我找不到这个函数的实现,最接近的是 updateOrFail()...
小智 5
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
])
Run Code Online (Sandbox Code Playgroud)
// 第一个数组必须包含所有主键/复合键,这使其成为唯一记录
| 归档时间: |
|
| 查看次数: |
5398 次 |
| 最近记录: |