AlexKuznec: не будет он у вас ничего из бд брать, по крайней мере до сохранения, вы пустую модель создаете, пройдитесь с дебагом по эктив рекорд модели и посмотрите какие поля сохраняются в бд, какой метод вызывается insert или update, посмотрите в дебаггере, там выводятся все sql запросы, может у вас в таблице есть unique индекс для user_id или какие то другие проблемы с таблицей.
AlikDex: либо можете написать хелпер, если вариант с рендером вам не нравится, что-то типо StatusHelper, его подключайте во вьюхе и рендерите статус, типа: StatusHelper::show($model->status);
AlikDex: так говорите, как будто у вас там 10000000 картинок будет выводиться, который обновляются каждую секунду. если не так, то можно кэшировать. просто больно смотреть в модель и видеть там тэги...
AlikDex: я бы оставил все в модели, кроме getColoredStatuses так как логика все таки не должна смешиваться с отображением, для отображения я бы создал вьюху новую и ее подгружал в нужных местах, передавая ей статус, аля: $this->render('showStatus', ['status' => $model->status]);
AlexKuznec: я и говорю способов много, на любой вкус, приведите код контроллера своего, если вы говорите что у вас не обновляются записи а только добавляются новые, может там недочет.
AlexKuznec: если свойство timezone не заполняется, проверяйте входящие POST параметры, возможно там массив приходит и не все заполняется, либо неправильно заполняете. Так же в валидаторе есть свойство timestampAttributeTimeZone может его вы и искали.
И еще интересно, почему $this->timezone определена, но равна не $model->timezone, а $app->timeZone
Потому что массив валидаторов заполняется при инициализации модели. Я вам привел рабочий код как можно это организовать. Если нужно использовать в разных местах, то создайте модель, и в модели в beforeValidate заполняйте валидатор таймзоной и от этой модели наследуйте другие. Можно создать функцию валидатор и в моделях ее подгружать поведением или трейтом. Решений масса.
Миха Панкратов: в смысле какая разница? мы должны угадывать что вы хотите туда записать?
создайте тогда в своей модели юзерс новое свойство public $x = 10;
и вызывайте его потом у моделей если вас такой ответ устроит