ActiveRecord, возвращаются не все поля

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
zingeon
Сообщения: 16
Зарегистрирован: 2015.04.20, 18:21

ActiveRecord, возвращаются не все поля

Сообщение zingeon »

использую следующий код:

Код: Выделить всё

StatusQuestionnaires::find(['select'=>'business_processes_route.status_id'])
->join('LEFT JOIN', 'questionnaires', 'questionnaires_id = questionnaires.id') 
->join('LEFT JOIN', 'business_processes_route', 'status_type_id = business_processes_route.status_id') 
->all();
 
где StatusQuestionnaires:

Код: Выделить всё

class StatusQuestionnaires extends ActiveRecord{
    public static function tableName() {
        return "status_questionnaires";
    }
}    
Все работает нормально, за исключением одного: когда в var_dump() просматриваю результат, то мне приходят поля только таблицы из модели StatusQuestionnaires, а из "заджоиненных" таблиц они не отображаются. Просмотр офдоков что-то не помог, искал по этому поводу - ничего не нашел нигде. Уже пару дней без толку. Подскажите, пожалуйста, в чем может быть проблема?
unclead
Сообщения: 162
Зарегистрирован: 2015.03.13, 19:44

Re: ActiveRecord, возвращаются не все поля

Сообщение unclead »

а какой запрос на выходе получается, если посмотреть через yii2-debug-toolbar?
zingeon
Сообщения: 16
Зарегистрирован: 2015.04.20, 18:21

Re: ActiveRecord, возвращаются не все поля

Сообщение zingeon »

вот:

SELECT "status_questionnaires".* FROM "status_questionnaires" LEFT JOIN "questionnaires" "que" ON questionnaires_id = que.id LEFT JOIN "business_processes_route" ON status_type_id = business_processes_route.status_id
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: ActiveRecord, возвращаются не все поля

Сообщение mkramer »

Так они и не должны отображаться. Так yii2спрограммирован, и из запроса это видно - join только для условий. А если нужно, чтоб возвращались, надо определять связи и вызывать with()
zingeon
Сообщения: 16
Зарегистрирован: 2015.04.20, 18:21

Re: ActiveRecord, возвращаются не все поля

Сообщение zingeon »

Так они и не должны отображаться. Так yii2спрограммирован, и из запроса это видно - join только для условий. А если нужно, чтоб возвращались, надо определять связи и вызывать with()
спасибо, не знал

Тогда такой вопрос. Есть у меня эти связи:

Код: Выделить всё

class StatusQuestionnaires extends ActiveRecord{
    public static function tableName() {
        return "status_questionnaires";
    }
    
    public function getQuestionnaire() {
        return $this->hasOne(Questionnaire::className(), ['id' => 'questionnaires_id']);
    }
    
    public function getBusinessProcess() {
        return $this->hasOne(BusinessProcess::className(), ['status_id' => 'status_type_id']);
    }
    
}
Это связь таблицы status_questionnaires с другими таблицами: 'questionnaires' и 'business_processes_route'

Используя такой код:

Код: Выделить всё

StatusQuestionnaires::find()
->with("questionnaire", "businessProcess")
->all();
все действительно отлично

Но таблица questionnaire имеет связь еще с другой таблицей, и это необходимо использовать в моем запросе. Как это реализовать? Модель Questionnaire, если что, уже имеет такие связи. Только непонятно, как их подключить
zingeon
Сообщения: 16
Зарегистрирован: 2015.04.20, 18:21

Re: ActiveRecord, возвращаются не все поля

Сообщение zingeon »

ага, понял, как это сделать.

Код: Выделить всё

StatusQuestionnaires::find()
->with("questionnaire.customer", "businessProcess") 
Невнимательно читал документацию
Ответить