【问题标题】:Show multiple values for a field in gridview在gridview中显示一个字段的多个值
【发布时间】:2016-01-30 10:32:43
【问题描述】:

我是 yii2 的新手。我有一个languages 主表(在name 字段中包含html、css、java、php ...)和一个registration 表,其中有一个名为language_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'],
        ],
    ]); ?>

在我的模型代码如下

public function getLanguages(){

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

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

【问题讨论】:

    标签: gridview yii2 yii2-basic-app


    【解决方案1】:

    终于有答案了。但我认为这不是解决这个问题的正确方法。分页不起作用(当我进入 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'],],
        ]); ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 2021-12-02
      相关资源
      最近更新 更多