Yii: вложенная ленивая загрузка с энергичной загрузкой - PullRequest
1 голос
/ 23 ноября 2011

Конечно, я что-то упускаю или не думаю о лучшем способе достижения того, что мне нужно, но вот что я хочу сделать.

У меня есть три модели: A, B и C. A имеет отношение MANY-MANY с B, называемое relation1, а B имеет отношение MANY-MANY с C, называемое relation2. Я хочу получить все B записи с их отношениями C (полная загрузка), но только из экземпляра A (отложенная загрузка, потому что я не хочу тратить впустую память на загрузку всех экземпляров relation1).

Итак, я хочу сделать что-то вроде следующего:

A::model()->findByPk($somePrimaryKey)->relation1->with('relation2');

Конечно, это не работает, потому что при relation1 отложенной загрузке я получаю массив экземпляров, а затем пытаюсь применить метод with() к необъекту.

Конечно, я могу немного поработать над итерацией массива, но я хочу знать, есть ли быстрый и удобный способ:)

Спасибо!

1 Ответ

3 голосов
/ 23 ноября 2011

Вы можете попробовать это:

A::model()->findByPk($somePrimaryKey)->with('relation1.relation2');

Я не могу найти никакого смысла в том, что вы "не хотите тратить впустую память, загружая все экземпляры отношения1"

Таким образом, вы просто загружаете модели B, которые относятся к этой конкретной модели A. не все из них.

Также взгляните на Реляционный запрос с помощью

...