Laravel updateOrCreate Проблема с обновлением метки времени - PullRequest
0 голосов
/ 08 февраля 2019

Я использую метод 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, и любые указания приветствуются, спасибо.

...