Вызов отношений на другие отношения модели yii 1.1 - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть 3 модели Цена, описание и продукт

у модели Description есть отношение к модели Price, а у модели Price есть отношение к продукту.

Могу ли я позвонить при получении продукта? это на модели описания, использующей отношение цены?

вот что я пытаюсь сделать

$description = Description::model()->with('Price')->findAll();
// after that I want to call the product which is on price.

они все соединяются, используя свой идентификатор. product_id, description_id и price_id

Как этого добиться? есть ли способ?

1 Ответ

1 голос
/ 15 апреля 2020

Прежде всего, JFYI, когда вы используете метод with() для установления sh присоединения части из построителя запросов ActiveRecord, пожалуйста, просто проверьте еще раз метод relations() из модели Speci c AR, чтобы увидеть Фактически определенные отношения. Я указал на это, потому что определение отношений в модели и доступ к ним на более поздней стадии с помощью построителя запросов чувствителен к регистру.

Вернуться к вашему вопросу.

Если вы уже получили свою модель Description присоединяясь с нетерпением with() к вашей Price модели, когда вы звоните $description->price->product, за кадром ActiveRecord выполнит так называемый lazy-loading подход.

Согласно Yii 1.1 документам -> https://www.yiiframework.com/doc/guide/1.1/en/database.arr:

Выполнение реляционного запроса Самым простым способом выполнения реляционного запроса является чтение реляционного свойства экземпляра AR. Если к свойству ранее не обращались, будет инициирован реляционный запрос, который объединяет две связанные таблицы и фильтры с первичным ключом текущего экземпляра AR. Результат запроса будет сохранен в свойстве как экземпляр (ы) связанного класса AR. Это известно как подход с отложенной загрузкой, т. Е. Реляционный запрос выполняется только тогда, когда к связанным объектам первоначально обращаются.

Пример ниже показывает, как использовать этот подход:

// retrieve the post whose ID is 10
$post = Post::model()->findByPk(10);
// retrieve the post's author: a relational query will be performed here
$author = $post->author;

Надеюсь, это поможет.

...