->updateOrCreate()
сохранит данные (которые вы упомянули, что вы не хотите делать).
Этот метод имеет два аргумента:
- Один для запроса строк с определеннымзначения полей
- Другое для данных, которые будут использоваться для обновления / создания записи
В этом случае, если вы просто проверяете, обновлено ли одно из двух полей, вам следуетпроверьте, было ли обновлено определенное поле, используя ->isDirty($field)
:
$row = MyModel::first();
if ($row->isDirty('field1')) {
$row->field1 = $fields['field1'];
}
if ($row->isDirty('field2')) {
$row->field2 = $fields['field2'];
}
$row->save();
Поскольку у вас может быть много полей, возвращаемых из API, вы можете выполнить цикл и проверить:
$row = MyModel::first();
foreach ($fields as $field => $value) {
if ($row->isDirty($field)) {
$row->$field = $value;
}
}
$row->save();