我正在使用updateOrCreate方法来检查是否已根据输入到数据库中的响应更改了数据。如果记录是新记录,则它将成功添加正确的时间戳。但是,我注意到更新的时间戳会更新所有记录的记录。我希望仅在记录已更新时才更新。
但是从这个问题来看,我相信所有记录都会被更新。
if (isset($customers->Data)) {
foreach ($customers as $customerData) {
if ($customer = $customerData->attributes()) {
if ((string) $customer->CustomerType !== 'A') continue;
if ((string) $customer->CustomerEmail === '') continue;
$customerDb = $this::updateOrCreate(
[
'email' => $customer->CustomerEmail,
'code' => $customer->Customer,
'currency' => $customer->Currency,
],
[
'email' => $customer->CustomerEmail,
'code' => $customer->Customer,
'currency' => $customer->Currency,
'name' => $customer->CustomerName,
'phone' => $customer->CustomerPhone,
'terms' => $customer->Terms,
]
);
}
}
}
电子邮件,代码,货币字段将始终是唯一的,其余字段(如果不存在)将创建。默认行为是否应该不管它都会更新?我要实现的是,仅检测记录是否已更改(如果它已更新了该特定字段),然后更新时间戳记(如果不存在),然后创建它。因此,筛选出已更新的内容,只显示这些记录,而不显示整个表。
对不起,但对Laravel来说是新的,欢迎您提供任何指导。