У меня есть активная модель записи «Событие» с отношением hasOne 'getUser'. Теперь, если я:Yii 2 Active Query joinWith issue
$eventModels = Event::find()->joinWith([
'user' => function($q){
return $q;
}])->all();
----------------------------------------------------
foreach($eventModels as $m){
var_dump($m->user); //Everything good as $m->user returns the related user object
die('skdw');
}
Но, если я добавить «выбрать» в запросе joinWith, то связанные с объектом «пользователь» становится нулевым. Вот вопрос:
$eventModels = Event::find()->joinWith([
'user' => function($q){
$q->select('email');// or, ['email'] or ['user.email'] etc. fields.
return $q;
}])->all();
----------------------------------------------------
foreach($eventModels as $m){
var_dump($m->user); // Returns NULL
die('skdw');
}
Но, если я делаю это $ q-> выберите ('*'), а затем $ m-> пользователь работает.
Я считаю, что это используется для работы в некоторых предыдущих версиях Yii 2 (Прямо сейчас, я работаю на Yii 2.0.9)
Является ли это ожидаемое поведение? Если да, то каково решение для выбора только некоторых полей выбора для связанной модели joinWith? Я не хочу получать все связанные поля, поскольку некоторые из связанных полей могут содержать тип данных «ТЕКСТ».