Задать вопрос
@knowledge

Обновится ли запись в бд в yii?

Скажите, будет ли обновлена запись в бд в такой конструкции, если данные остаются те же

В бд
User
id=1
name='john'
age=29

В коде
$user = User::find(1):
$user->name='john'
$user->age=29
$user->save():

Произойдёт ли обновление бд?
Если да, есть ли возможность как то это отклонить?

Идет обновление большого количества моделей, какие то данные в некоторых моделях обновлены, в некоторых нет
Если не обновлены, не хотелось бы записывать лишний раз
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой Комментировать
Ответ пользователя Mysterion К ответам на вопрос (3)
@Mysterion
Да, будут обновлены. Более того, в yii, если речь о первой версии фреймворка, есть неприятная особенность - если Вы будете доставать из базы запись через active record, менять только одно поле и сохранять запись снова, то в базу уйдет запрос с update'ом всех полей, но изменится при этом только одно.
Избежать можно, например, сравнивая поля и значения в контроллере, если речь о небольшом количестве полей и временном решении или добавлении в модель методов afterFind и beforeSave. Сохраняйте в afterFind $this->attributes в какую-нибудь приватную переменную и в beforeSave проверяйте $this->attributes со значением этой переменной.
Ответ написан
Комментировать