举例用户和用户组关联:
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; // 匿名函数方式自定义显示的值
},
],
打完,收工!