我有一个Yii2 gridview的。现在,如果我想用延迟加载,好像这显示相关数据:
[
'attribute' => 'relatedName',
'value' => function ($model) {
return (($rel = $model->getRelated()->one()) ?
$rel->name : '')
;}
],
如果我想表现出相同的相关模型的附加属性,我可以添加一个新的属性像上面,但随后的Yii会为每一行数据再次选择同一型号有关。如果没有预先加载(不幸的是,不可能在这种情况下),才有可能迫使警予来选择每行相关的只有一次,让$rel
可重复使用的许多列?提前致谢!
$model->getRelated()
返回ActiveQuery对象。如果你想加载相关的模型,一旦你可以使用$model->related
的$model->getRelated()->one()
而不是去做。例如:
[
'attribute' => 'relatedName',
'value' => function ($model) {
return is_null($model->related) ? '' : $model->related->name;
}
],
或者更简单的方法
[
'attribute' => 'related.name',
],