Почему приходят не все поля из базы по запросу
Есть запрос в БД
$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 шт):
Запрашиваешь ведь Questionnaire::find() и получаешь данные только этой модели. Остальные надо получать через реляцию, если эти данные в других моделях. Также надо не забыть о ленивой и жадной подгрузке данных и других таблиц.