Я использую функцию updateOrCreate для создания новых строк или обновления существует на основе заданных значений. Но когда я пытаюсь обновить значение, которое определено как метка времени (не по умолчанию «create_at» или «updated_at»), оно не обновляет значение.
Проблема возникает только тогда, когда я использую функцию updateOrCreate, и только когда единственное поле для обновления - это поле метки времени. (В моем случае, 'last_scan').
Например, когда я изменяю «статус» на 0, все значения, обновляемые в базе данных, включают поле «last_scan».
Я хочу убедиться, что каждый раз, когда я запускаю эту функцию, last_scan обновлялся до времени, в течение которого функция выполнялась, есть ли данные для обновления или нет.
$categoryEntity = CategoryEntity::updateOrCreate(
[
'store_id' => $this->store_id,
'remote_id' => $collection->id
],
[
'remote_parent_id' => 0,
'name' => $collection->title,
'status' => 1,
'last_scan' => Carbon::now()
]
);
Я попытался заменить обновление и создать обычным способом обновления следующим образом, и он отлично работал:
$categoryEntity->last_scan = Carbon::now();
$categoryEntity->save();
Мой файл миграции выглядит следующим образом:
Schema::create('categories_entities', function (Blueprint $table) {
$table->increments('id');
$table->integer('store_id');
$table->integer('remote_id');
$table->integer('remote_parent_id');
$table->string('name');
$table->integer('status');
$table->timestamp('last_scan');
$table->timestamps();
});