У меня имеется модель "Profile", унаследованная от ActiveRecord, в которой имеется несколько связей:
Код: Выделить всё
public function getCountry()
{
return $this->hasOne(Country::className(), ['id' => 'country_id']);
}
public function getGroup()
{
return $this->hasOne(Group::className(), ['id' => 'group_id']);
}
Код: Выделить всё
return static::find()
->where(['user_id' => $userId])
->with(['country', 'group'])
->one();
Код: Выделить всё
SELECT * FROM `profile` WHERE `user_id`='1';
SELECT * FROM `country` WHERE `id`='10';
SELECT * FROM `group` WHERE `id`='3';
Код: Выделить всё
SELECT `profile`.*
FROM `profile`
LEFT JOIN `country` ON `profile`.`country_id` = `country`.`id`
LEFT JOIN `group` ON `profile`.`group_id` = `group`.`id`
WHERE `user_id`='1'
Подскажите, как правильно составить конструкцию ActiveQuery, чтобы получать данные из БД одним запросом? Или возможно я что-то не понимаю в работе Active Record в Yii 2, в этом случае, буду рад услышать пояснения.
Теги: yii2, activerecord, query, activequery, relations, join.