如何正确使用Yii2框架中的hasOne关联关系?
- 内容介绍
- 文章标签
- 相关推荐
本文共计433个文字,预计阅读时间需要2分钟。
相关专题
一对一:hasOne (推荐学习:yii教程)
返回结果:这两个方法的返回结果都为yii\db\ActiveQuery对象
第一个参数:所关联的模型的类名称。
第二个参数:是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。
关联的使用
现在我们获取一个客户的所有的订单信息
$customer = Customer::findOne(1); $orders = $customer->orders; // 通过在Customer中定义的关联方法(getOrders())来获取这个客户的所有的订单。
上面的两行代码会生成如下sql语句
SELECT * FROM customer WHERE id=1; SELECT * FROM order WHERE customer_id=1;
关联结果缓存
如果客户的订单改变了,我们再重新调用
$orders = $customer->orders;
再次得到订单的时候你会发现没有变化。原因是只会在第一次执行$customer->orders的时候才会去数据库里面查询,然后会把结果缓存起来,以后查询的时候都不会再执行sql。
本文共计433个文字,预计阅读时间需要2分钟。
相关专题
一对一:hasOne (推荐学习:yii教程)
返回结果:这两个方法的返回结果都为yii\db\ActiveQuery对象
第一个参数:所关联的模型的类名称。
第二个参数:是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。
关联的使用
现在我们获取一个客户的所有的订单信息
$customer = Customer::findOne(1); $orders = $customer->orders; // 通过在Customer中定义的关联方法(getOrders())来获取这个客户的所有的订单。
上面的两行代码会生成如下sql语句
SELECT * FROM customer WHERE id=1; SELECT * FROM order WHERE customer_id=1;
关联结果缓存
如果客户的订单改变了,我们再重新调用
$orders = $customer->orders;
再次得到订单的时候你会发现没有变化。原因是只会在第一次执行$customer->orders的时候才会去数据库里面查询,然后会把结果缓存起来,以后查询的时候都不会再执行sql。

