2015-03-02 2 views
1

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

Для того, чтобы показать, как это:

enter image description here

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

Я знаю, что это связано с отношениями модели. Это было изменено в 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 page on working with relations in data widgets для получения дополнительной информации.

+0

Если вы не хотите видеть фактический текст «' raw ',' It отлично работает, спасибо! – Paramone

Смежные вопросы