Вы вызываете метод update()
в вашей модели.Возвращает 1, если обновление прошло успешноНе имеет значения, были ли внесены какие-либо изменения, при успешном обновлении всегда 1.
Если вы хотите сохранить в базу данных только при наличии изменений, вы можете использовать метод save()
, которыйпроверяет наличие изменений и записывает данные в базу данных, только если данные отличаются.Вы уже создали код для этого, настроив модель на получение всех новых данных с листа, так что простой save()
в конце (с проверкой, сохраняет ли он) будет делать то, что вы хотите.
Тем не менее, ваш текущий код выполняет лот дополнительной работы.Вы присваиваете все переменные модели, а затем обновляете на основе этого присвоения данных модели.Вам не нужно делать все это назначение снова в методе обновления.После того, как вы установили поля, вы можете сохранить сразу, вам не нужно переназначать все переменные.Итак:
$UCPost->gown_2019 = $request->input('Gown2019');
// etc..
$UCPost->Rentals_Left = $request->input('Rentals_Left');
$UCPost->save();
Переместит вас туда, куда вы хотите, и сохранит, только если отличается.
Если вы контролируете свою форму и можете изменить имена элементов формы, чтобы они соответствовали вашимбазе данных, это может быть еще прощеВы можете сделать все это в одной строке:
$UCPost->update($request->all());
Если вы хотите проверить, не загрязнена ли модель, просто вызовите isDirty ():
if($UCPost->isDirty()){
// changes have been made
}
Наконец, если вы хотитепроверьте, было ли что-либо изменено после любого из методов (сохранить или обновить):
if ($UCPost->wasChanged()) {
// changes have been made
}
Надеюсь, это поможет