Yii2.0框架基础--数据查询之AR类方法 关联查询

来源:互联网 发布:知行理工app 编辑:程序博客网 时间:2024/05/30 23:02
  • [[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


0 0