Прежде всего, 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;
Надеюсь, это поможет.