Реляционные запросы в Yii 2 не работают с JOIN

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

Реляционные запросы в Yii 2 не работают с JOIN

Сообщение idsite »

Почему в Yii 2 , при выполнения запроса с использованием "жадной загрузки" выполняется несколько запросов - селектов связных сущностей по ключам, а в Yii 1 , реляционные данные загружались join ом.
например на YII 2:

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

City::find()->with('country')->all();
выполнит два запроса

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

select * from city;
select * from country where id in (.../*ИД из найденых горордов*/ )
Если в Yii 1 делать подобное будет один запрос, с JOIN country
dmeroff
Сообщения: 101
Зарегистрирован: 2012.06.05, 14:32
Откуда: Петрозаводск
Контактная информация:

Re: Реляционные запросы в Yii 2 не работают с JOIN

Сообщение dmeroff »

JOIN будет выполнятся при использовании joinWith. Использование with же будет совершать несколько запросов.
idsite
Сообщения: 21
Зарегистрирован: 2013.10.01, 01:21
Контактная информация:

Re: Реляционные запросы в Yii 2 не работают с JOIN

Сообщение idsite »

если использовать joinWith , запрос будет выполняться с JOIN но в select не будут включены данные связанной модели .
в и тоге получиться так же два запроса, select с join ом но без вывода связанных данных,
и если $eagerLoading = true отдельными запросами загрузка данных связанных моделей
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Реляционные запросы в Yii 2 не работают с JOIN

Сообщение zelenin »

idsite писал(а):если использовать joinWith , запрос будет выполняться с JOIN но в select не будут включены данные связанной модели .
в и тоге получиться так же два запроса, select с join ом но без вывода связанных данных,
и если $eagerLoading = true отдельными запросами загрузка данных связанных моделей
все верно. так и работаем
Ответить