我有3模型价格,描述和产品
描述模型与价格模型相关,价格模型与产品相关。
当我尝试使用Price的关系在Description模型上获取产品时,我是否可以调用该产品?
"这就是我要做的"
$description = Description::model()->with('Price')->findAll();
// after that I want to call the product which is on price.
它们都是使用其id连接。product_id、description_id和price_id
我怎样才能做到这一点?有办法吗?
1条答案
按热度按时间but5z9lq1#
首先,JFYI当您使用
with()
方法从ActiveRecord的查询构建器中建立连接部分时,请再次检查特定AR
模型中的relations()
方法,以查看实际定义的关系。我指出这一点是因为在模型中定义关系并在稍后阶段通过查询构建器访问它们是区分大小写的。回到你的问题。
如果你已经把你的
Description
模型急切地加入了你的with()
模型Price
中,当你在幕后调用$description->price->product
时,ActiveRecord
将执行所谓的lazy-loading
方法。根据
Yii
1.1文件-〉https://www.yiiframework.com/doc/guide/1.1/en/database.arr:1.* 执行关系查询 *
执行关系查询最简单的方法是阅读AR示例的关系属性。如果之前未访问该属性,则将启动关系查询,该查询将连接两个相关表,并使用当前AR示例的主键进行过滤。查询结果将作为示例保存到该属性这被称为延迟加载方法,即,仅当最初访问相关对象时才执行关系查询。
希望这对你有帮助。