Yii关联查询返回多表数据-with()

有两张表

cmp_role 权限 id

cmp_user 用户 role_id 关联cmp_role的id 

role - user 一对多关系 反之 user - role 多对一关系

1、models 建立表关系

CmpRole.php
class CmpRole extends yiidbActiveRecord
{
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'cmp_role';
    }
    //第一个参数 关联表 表名 第二个参数1 关联表 字段 参数2为主表 ID
    public function getCmpUser(){
         return $this->hasMany(CmpUser::className(), ['role_id'=>'id'])->asArray();
    }
}

CmpUser.php

class CmpUser extends yiidbActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'cmp_user';
    }

    //第一个参数 关联表 表名 第二个参数1 关联表 ID 参数2为主表 role_id 外键
    public  function getRole()
    {
        return $this->hasOne(CmpRole::className(),['id'=>'role_id'])->asArray();
    }
}

使用

 // with()使用 参数 cmpUser 为 modules定义的方法 getCmpUser();区分大小写
        $withDate = CmpRole::find()->with('cmpUser')->asArray()->all();

 这样就能显示多表数据了

原文地址:https://www.cnblogs.com/dzcici/p/12449415.html