Yii2 GridView中如何让相关的模型只一次更多的属性

问题描述 投票:0回答:1

我有一个Yii2 gridview的。现在,如果我想用延迟加载,好像这显示相关数据:

[
    'attribute' => 'relatedName',
    'value' => function ($model) {
        return (($rel = $model->getRelated()->one()) ?
            $rel->name : '')
    ;}
],

如果我想表现出相同的相关模型的附加属性,我可以添加一个新的属性像上面,但随后的Yii会为每一行数据再次选择同一型号有关。如果没有预先加载(不幸的是,不可能在这种情况下),才有可能迫使警予来选择每行相关的只有一次,让$rel可重复使用的许多列?提前致谢!

php gridview yii2 lazy-loading
1个回答
3
投票

$model->getRelated()返回ActiveQuery对象。如果你想加载相关的模型,一旦你可以使用$model->related$model->getRelated()->one()而不是去做。例如:

[
    'attribute' => 'relatedName',
    'value' => function ($model) {
        return is_null($model->related) ? '' : $model->related->name;
    }
],

或者更简单的方法

[
    'attribute' => 'related.name',
],
© www.soinside.com 2019 - 2024. All rights reserved.