Как работать со связанными таблицами в Gridview: Yii2

Я написал свой код следующим образом:

    <?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        //['class' => 'yii\grid\SerialColumn'],

        'quantity',
        [
            'header' => 'SN',
            'format' => 'raw',
            'value' => function($data) {
                $product = Product::findOne($data->product_ID);
                return $product->SN_required ? '<span class="glyphicon glyphicon-ok"></span>' : '';
            }
        ],

Чтобы показать это так:

введите здесь описание изображения

Тем не менее, я думаю, что это неправильно (даже если это работает). Может ли кто-нибудь дать мне правильную нотацию для такого кода?

Я знаю, что это связано с модельными отношениями. Это было изменено в Yii2.

 public function getProduct()
{
    return $this->hasOne(Product::className(), ['ID' => 'product_ID']);
}

person Paramone    schedule 02.03.2015    source источник


Ответы (1)


Вы были на правильном пути. Вы можете получить доступ к отношениям внутри закрытия, используя $data->relation в вашем случае:

'value' => function($data) {
    return $data->product->SN_required ? '<span class="glyphicon glyphicon-ok"></span>' : '';
}

Вы можете просмотреть страницу Yii2 на работа с отношениями в виджетах данных для получения дополнительной информации.

person topher    schedule 02.03.2015
comment
Если вы не хотите видеть фактический текст ‹span.... Вам нужно будет добавить ' 'format' =› 'raw', ' Отлично работает, спасибо! - person Paramone; 03.03.2015