Задать вопрос
  • Как считывать аттрибуты ActiveRecord в Yii2?

    @fatal_project
    вся соль в публичных свойствах соответствующих полей таблицы БД - именно в этом и проблема.

    если капнуть глубже, то в первом yii свойство _attributes модели ActiveRecord изначально инициализировалось в конструкторе полями соответствующей таблицы из БД, поэтому наличие или отсутствие свойств в модели не сказывалось на поведении тех или иных методов yii.

    во втором yii немножко иная ситуация. _attributes всегда пустой и нигде по умолчанию не инициализируется. если задавать public свойства соответствующих полей таблицы в модели, то будет происходить просто банальное присвоение $model->$attrName = $attrValue, при этом _attributes всегда будет пуст и не инициализирован и как итог - результат выше.

    если убрать данные свойства, то через магический метод __set yii2 сделает всё как надо и свойство _attributes будет проинициализировано как положено и модель начнёт работать так, как ожидает этого разработчик.

    сам не мог понять долго, что случилось, когда начал переносить проекты на yii2. поиски информации привели к тупику, ситуаций много, ответов нету. пришлось разбираться, надеюсь, мой ответ кому-то поможет понять свои ошибки.
    Ответ написан
    Комментировать