Дублирование запросов к БД

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Yiivgeny
Сообщения: 80
Зарегистрирован: 2010.11.24, 10:39

Дублирование запросов к БД

Сообщение Yiivgeny »

Всем привет.
Кто нибудь может мне объяснить ситуацию с джойном связей? (в Yii первой версии это называлось together)

Связь:

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

public function getTree(){
    $relation = $this->hasMany(CategoryReference::className(), ['category_id' => 'category_id']);
    return $relation;
}
Используем так:

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

$Object = Category::find()->innerJoinWith('tree')->one();
Непонятно зачем выполняется 2 запроса к БД. Ведь через первый запрос он уже получает необходимые данные, второй явно лишний.
Вложения
2015-06-18 12-10-42 Скриншот экрана.png
2015-06-18 12-10-42 Скриншот экрана.png (21.75 КБ) 2919 просмотров
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Дублирование запросов к БД

Сообщение zelenin »

в первом же запросе нет category_reference.*, а, значит, уже одного запроса недостаточно.
Yiivgeny
Сообщения: 80
Зарегистрирован: 2010.11.24, 10:39

Re: Дублирование запросов к БД

Сообщение Yiivgeny »

Ну вопрос был в том, зачем так сделано?
Получается что если есть дополнительные условия, они будут наложены минимум дважды.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Дублирование запросов к БД

Сообщение zelenin »

Yiivgeny писал(а):Ну вопрос был в том, зачем так сделано?
Получается что если есть дополнительные условия, они будут наложены минимум дважды.
чтобы не вытаскивать все в одном нагруженном массиве, а потом вручную это не отфильтровывать в AR. Сделано наглядно для разработчика.
Yiivgeny
Сообщения: 80
Зарегистрирован: 2010.11.24, 10:39

Re: Дублирование запросов к БД

Сообщение Yiivgeny »

Ну не знаю на счет наглядности, не могу даже предугадать какой результат будет если я захочу в связь наложить на лету еще какое-то условие из соседнего джойна.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Дублирование запросов к БД

Сообщение zelenin »

Yiivgeny писал(а):Ну не знаю на счет наглядности, не могу даже предугадать какой результат будет если я захочу в связь наложить на лету еще какое-то условие из соседнего джойна.
какой хотите, такой и получите
Ответить