2016-01-30 71 views
1

我是yii2中的新成員。我有一個languages主表(name字段包含html,css,java,php ...)和一個registration表,其中有一個字段language_id。我使用json_encode爲該字段插入了多個值。 現在在數據庫中顯示語言ID爲["1","2","3","4","5"]在gridview中顯示一個字段的多個值

現在我想顯示使用gridview存儲在數據庫中的數據。我如何在gridview中顯示語言的多個值。下面給出的是我已經與我的gridview的

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

      'first_name', 
      'last_name', 
      'gender', 
      'address', 
      ['label'=>'Course', 
      'value'=>'course.name'], 
      'email:email', 
      ['label'=>'Languages Known', 
      'value'=>'languages.name'], 
      'course_completion_date', 

      ['class' => 'yii\grid\ActionColumn'], 
     ], 
    ]); ?> 

,並在我的模型試圖代碼如下

public function getLanguages(){ 

     $result = json_decode($this->language_id, true); 

     return $this->hasOne(Languages::className(), ['id' => $result]); 
    } 

回答

0

最後我得到了答案。但我不認爲這是解決這個問題的恰當方法。分頁不工作(當我進入到第2頁等),並顯示爲錯誤:

Invalid argument supplied for foreach()

<?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'filterModel' => $searchModel, 
     'columns' => [ 
      ['class' => 'yii\grid\SerialColumn'], 
      'first_name', 
      'last_name', 
      'gender', 
      'address', 
      ['label'=>'Course', 
      'value'=>'course.name'], 
      'email:email', 
      ['label'=>'Languages Known', 
      'value' => function ($data) 
      { 
       $arr= json_decode($data->language_id,true); 
       $lang=""; 
       $i=0; 
       foreach ($arr as $value) 
       { 
        $model_lan = Languages::find()->where(['id'=>$value])->one(); 
        $lang .= $model_lan->name.' '; 
       } 
       return $lang; 
      },], 
      'course_completion_date', 
      ['class' => 'yii\grid\ActionColumn'],], 
    ]); ?> 
相關問題