- [[ActiveRecord::hasOne()]]:返回对应关系的单条记录
- [[ActiveRecord::hasMany()]]:返回对应关系的多条记录
应用实例:
//客户表Model:CustomerModel
//订单表Model:OrdersModel
//国家表Model:CountrysModel
//首先要建立表与表之间的关系
//在CustomerModel中添加与订单的关系
Class CustomerModel extends \yii\db\ActiveRecord
{
...
public function getOrders()
{
//客户和订单是一对多的关系所以用hasMany
//此处OrdersModel在CustomerModel顶部别忘了加对应的命名空间
//id对应的是OrdersModel的id字段,order_id对应CustomerModel的order_id字段
return $this->hasMany(OrdersModel::className(), ['id'=>'order_id']);
}
public function getCountry()
{
//客户和国家是一对一的关系所以用hasOne
return $this->hasOne(CountrysModel::className(), ['id'=>'Country_id']);
}
....
}
// 查询客户与他们的订单和国家
CustomerModel::find()->with('orders', 'country')->all();
// 查询客户与他们的订单和订单的发货地址
CustomerModel::find()->with('orders.address')->all();
// 查询客户与他们的国家和状态为1的订单
CustomerModel::find()->with([
'orders' => function ($query) {
$query->andWhere('status = 1');
},
'country',
])->all();
注:with中的orders对应getOrders
本文详细介绍了在数据库设计中如何使用ActiveRecord的hasOne()与hasMany()方法来建立表与表之间的对应关系,通过实际代码示例展示了如何查询客户与订单、国家等之间的关联数据。
518

被折叠的 条评论
为什么被折叠?



