在gridview中显示字段的多个值

在gridview中显示字段的多个值,gridview,yii2,yii2-basic-app,Gridview,Yii2,Yii2 Basic App,我是yii2的新手。我有一个languages主表(在name字段中包含html、css、java、php…)和一个registration表,其中有一个名为language\u id的字段。我使用json_encode为该字段插入了多个值。 现在在数据库中显示语言id为[“1”、“2”、“3”、“4”、“5”] 现在我想使用gridview显示存储在db中的数据。如何在gridview中显示语言的多个值。下面是我用gridview尝试的内容 <?= GridView::widget([

我是yii2的新手。我有一个
languages
主表(在
name
字段中包含html、css、java、php…)和一个
registration
表,其中有一个名为
language\u id
的字段。我使用json_encode为该字段插入了多个值。 现在在数据库中显示语言id为
[“1”、“2”、“3”、“4”、“5”]

现在我想使用gridview显示存储在db中的数据。如何在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'],
        ],
    ]); ?>

最后我得到了答案。但我认为这不是解决这一问题的适当办法。分页不起作用(当我进入2页等时),错误显示为:

为foreach()提供的参数无效。


我终于得到了答案。但我认为这不是解决这一问题的适当办法。分页不起作用(当我进入2页等时),错误显示为:

为foreach()提供的参数无效。


public function getLanguages(){

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

        return $this->hasOne(Languages::className(), ['id' => $result]);
    }
<?= 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'],],
    ]); ?>