gpt4 book ai didi

php - Laravel - 批量赋值 ||如果找到相同的唯一键,我该如何更新数据,如果数据是新的,我该如何创建

转载 作者:可可西里 更新时间:2023-11-01 08:38:29 26 4
gpt4 key购买 nike

我在数据库中创建了一个名为:staff 的表。

在该表中,有:idstaffIDstaffNamerole密码id 字段是autoincrement(它的意思是主键),staffID唯一键。

之后,我插入了一些数据。例如:、69、habie、admin、123456

问题是当我尝试插入新数据时,例如:

| , 69, habie, admin, 2010201 | , 70, rafif, 财务, 808080 | , 71, rizieq, 销售, 737373 |

我会得到一个错误代码,错误信息是:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '69' for key 'staffID' (SQL: insert into staff (staffID, staffName, role, password) values (69, Habie, admin, 2010201))

我已经尝试了很多步骤来解决这个问题。例如:

我用过:来自 laravel eloquent 类的 firstOrCreate 方法、firstOrNew 方法和 updateOrCreate 方法。但它没有效果

$this::firstOrCreate([
"staffID" =>$staff["PIN2"],
"staffName" =>$staff["Name"],
"role" =>$staff["Privilege"],
"password" =>$pass
]);

如果相同的唯一键有新密码等,我只希望我的表得到更新。如果有新数据,laravel 插入那个新数据到数据库。我希望有人能帮助我。

最佳答案

首先,您以错误的方式使用了 firstOrCreate() 方法。如果 staffID 是唯一的,则必须按以下方式使用它。

$starff = $this::firstOrCreate([
"staffID" =>$staff["PIN2"],
],
[
"staffName" =>$staff["Name"],
"role" =>$staff["Privilege"],
]);

// Update password
$staff->password = $pass;
$staff->save();

这将检查 fir staffID 并在不存在时创建一个新的。然后您可以更新密码或其他详细信息。

关于php - Laravel - 批量赋值 ||如果找到相同的唯一键,我该如何更新数据,如果数据是新的,我该如何创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57781920/

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