Как работать со связанными таблицами в 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']);
}

1

Решение

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]