Почему приходят не все поля из базы по запросу

Есть запрос в БД

$platform = Questionnaire::find()->select(['q.full_name_company', 'q.real_level','u.username','up.password'])
                ->from(Questionnaire::tableName().' as q')
                ->leftJoin(User::tableName().' as u','q.id = u.company_id')
                ->leftJoin(UserPass::tableName().' as up', 'u.id = up.user_id')
                ->where(['q.id' => $id])->one();

в блоке ->select(['q.full_name_company', 'q.real_level','u.username','up.password']) указаны все поля которые нужно получить. но в итоговом объекте только два значения full_name_company и real_level из таблицы Questionnaire, u.username и up.password нет в свойствах объекта.

Если добавить в запрос опцию ->asArray() то в ответе в массиве все поля на месте.

Почему это происходит? Нужно получить именно объект, т.к далее свойства перезаписываются.


Ответы (1 шт):

Автор решения: fedornabilkin

Запрашиваешь ведь Questionnaire::find() и получаешь данные только этой модели. Остальные надо получать через реляцию, если эти данные в других моделях. Также надо не забыть о ленивой и жадной подгрузке данных и других таблиц.

→ Ссылка