Laravel updateOrCreate时间戳更新问题

时间:2019-02-07 21:08:10

标签: laravel eloquent laravel-5.2

我正在使用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来说是新的,欢迎您提供任何指导。

0 个答案:

没有答案