GridView 添加关联属性或自定义列 [ 2.0 版本 ]
由于私信篇幅有限,在这边回复一下网友的问题。
问题节选如下:
如何在GridView里面,显示表关联表的字段?网上的教程好像都只讲了70%,有没有推荐我的文章?
回答如下:
GridView
显示关联表字段的形式有很多种。
问题的核心在于你要理解模型数据渲染的具体执行流程, 建议看下相关的源码。
推荐的文章倒是没有。给你几个我个人的解决方法吧
一、dataProvider中关联的model中已添加关联的情况,如
class ModelA extends ActiveRecord
{
//...
public function getRelate()
{
return $this->hasOne(ModelRelate::class, ['a_id' => 'id']);
}
}
方法1、直接使用属性形式
//... 展示 ModelRelate 中的 relate_desc 属性
columns => [
'relate.relate_desc',
'relate.a_id',
],
方法2、重写 value 取值方法
//...
columns => [
'id',
//....
[
'label' => '关联取值',
'value' => function($modelA) {
return $modelA->getRelate()->relate_desc;
}
]
]
二、 根据一中的 方法2,其实可以提炼出其它很多的处理方法,展示任何你想展示的数据。
比如:
//...
columns => [
'id',
//...
[
'label' => '取任意值',
'format' => 'raw',
'value' => function($modelA) {
$c = ModelC::find()->where([ 'id' => $modelA->c_id ])->one();
if ($c) {
return $c->c_name;
}
return '<span>no c found</span>';
}
]
]
多尝试多练习吧
Jeen
注册时间:2014-10-03
最后登录:2024-08-16
在线时长:18小时16分
最后登录:2024-08-16
在线时长:18小时16分
- 粉丝9
- 金钱1120
- 威望190
- 积分3200
共 0 条评论