Yii2 gridview, как получить связанную модель только один раз для большего количества атрибутов - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть вид сетки Yii2.Теперь, если я хочу показать связанные данные, используя отложенную загрузку, это выглядит так:

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

Если я хочу показать дополнительный атрибут той же связанной модели, я могу добавить новый атрибут, как указано выше, но затемYii снова выберет одну и ту же связанную модель для каждой строки данных.Без энергичной загрузки (к сожалению, в данном случае это невозможно) можно ли заставить yii выбрать связанный только один раз для каждой строки и сделать $rel многоразовым во многих столбцах?Заранее спасибо!

1 Ответ

0 голосов
/ 07 февраля 2019

$model->getRelated() возвращает объект ActiveQuery.Если вы хотите загрузить связанную модель один раз, вы можете сделать это с помощью $model->related вместо $model->getRelated()->one().Например:

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

Или более простой способ

[
    'attribute' => 'related.name',
],
...