- [[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