Дублируются запросы

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Ответить
brain2xml
Сообщения: 43
Зарегистрирован: 2013.07.06, 09:28

Дублируются запросы

Сообщение brain2xml »

Добрый день!

вот справка из документации

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

// eager loading both "orders" and "country"
$customers = Customer::find()->with('orders', 'country')->all();
// equivalent to the array syntax below
$customers = Customer::find()->with(['orders', 'country'])->all();
// no SQL executed 
$orders= $customers[0]->orders;
// no SQL executed 
$country = $customers[0]->country;
Теперь конкретно у меня

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

class Material extends \yii\db\ActiveRecord
{
public function getData()
    {
        return $this->hasOne(Data::className(), ['id' => 'id']);
    }
    public function getUrl()
    {
        return $this->hasOne(Url::className(), ['id' => 'id']);
    }
}
Мне хочется получить данные из трех таблиц одним махом
делал и так

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

Material::find()->joinWith(['data','url'])->where(['"pgvk"."pgvk_material".id' => $id])->all(),
и так

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

Material::find()->with(['data','url'])->where(['"pgvk"."pgvk_material".id' => $id])->all(),
все ровно на выходе даже если и есть join запрос, рядом еще и простые запросы тоже идут.

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

19    19:53:25.489    10.1 ms    SELECT    SELECT "pgvk"."pgvk_material".* FROM "pgvk"."pgvk_material" LEFT JOIN "pgvk"."pgvk_data" ON "pgvk"."pgvk_material"."id" = "pgvk"."pgvk_data"."id" LEFT JOIN "pgvk"."pgvk_url" ON "pgvk"."pgvk_material"."id" = "pgvk"."pgvk_url"."id" WHERE "pgvk"."pgvk_material"."id"='154784'
/home/rus/yii/basic/controllers/MaterialController.php (55)

25    19:56:12.658    6.9 ms    SELECT    SELECT * FROM "pgvk"."pgvk_url" WHERE "id"=154784
/home/rus/yii/basic/controllers/MaterialController.php (55)
Что же здесь не так?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Дублируются запросы

Сообщение ElisDN »

Yii2 не парсит из JOIN, а joinWith срабатывает как join + with. Всё так.
brain2xml
Сообщения: 43
Зарегистрирован: 2013.07.06, 09:28

Re: Дублируются запросы

Сообщение brain2xml »

ElisDN писал(а):Yii2 не парсит из JOIN, а joinWith срабатывает как join + with. Всё так.
получается только через createCommand? а в чем причина отказа? Не дописали?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Дублируются запросы

Сообщение ElisDN »

brain2xml писал(а):а в чем причина отказа? Не дописали?
Для упрощения запросов и универсальности работы с разными базами. Про это немного здесь упоминали.
Ответить