Страница 1 из 1

Исключить некоторые аттрибуты при сохранении модели

Добавлено: 2017.06.18, 00:43
anagamin
Есть большой сайт. С крутой посещаемостью. Проблема такая:
1. Человек пополняет себе баланс через яндекс.
2. Человек открывает произвольную страницу, на которой идет выборка его модели с данными, типа $m=User:findByPk(Yii::app()->user->id) (очень условно).
3. В этот момент приходит коллбек от яндекса, который обновляет баланс пользователя.
4. А после этого скрипт из п.2. делает $m->save() и баланс снова сохраняется старый, потому что обновляются все аттрибуты модели, в т.ч. баланс.

И проблема была бы не проблемой, если б это было одно место. Можно было б обернуть в "select for update" внутри транзакции, и все. Но таких мест - сотня, и хрен знает, какое именно в данный момент затирает обновленный баланс :). А все переделывать - уж больно долго, да и неправильно, ИМХО.

Соответственно, вопрос: как исключить из $m->save() сохранение отдельного аттрибута (например, balance)?

Re: Исключить некоторые аттрибуты при сохранении модели

Добавлено: 2017.06.18, 12:14
urichalex
$model->save(true, ['массив', 'с', 'аттрибутами']);