Yii grid view 关联其他表的字段

举例用户和用户组关联:
user表字段为:

id,username,group_id,email,created_at

user_group表字段为:

id,group_code

后台显示 user grid 的时候用户组一列想显示 group_code 而不是 group_id
修改如下:
在models\User.php 中添加函数:

public function getUserGroup(){
    return $this->hasOne(UserGroup::className(),['id'=>'group_id']);
}

之后修改models\UserSearch.php
先添加 成员变量

pulbic $group_code;
// 修改 rules 函数 为group_code添加rules 下面一行代码根据实际修改即可
[['group_code'], 'safe']

修改 search 函数,添加代码:

$query->joinWith(['userGroup as ug']);

想让其可以排序则添加代码:

// 用户组排序根据用户组对应的id排序
$dataProvider->setSort([
    'attributes' => [
        'id',
        'username',
        'group_code' => [
            'asc' => ['ug.id' => SORT_ASC],
            'desc' => ['ug.id' => SORT_DESC],
        ],
        'email',
    ]
]);

添加过滤:

$query->andFilterWhere(['like', 'ug.group_code', $this->group_code]);

最后前天添加显示即可,修改文件 views\user\index.php, columns 里面添加

[
    'label'=>'用户组',
    'attribute' => 'group_code',
    //'value' => 'userGroup.group_code',
    'value' => function ($model){
        return $model->userGroup->group_code;  // 匿名函数方式自定义显示的值
    },
],

打完,收工!

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值