2016-04-04 6 views
0

私はテーブルを持っています: id |名前|値|jsonの列からyii2のグリッドビュー

1 |ジョン| {"key1": "abs"、 "key2": "qwe"}、 "data2":{"key1": "asd"、 "key2": "obj"}}

各行はjsonの長さが異なります。私はグリッドビューを作成する必要があります:

id |名前| abs | asd | ...

1 |ジョン| qwe | obj | ...

マイコードSqlDataProvider:

$count = Yii::$app->db->createCommand(' 
      SELECT COUNT(id) FROM statistics', [':status' => 0])-  >queryScalar(); 
     $dataProvider = new SqlDataProvider([ 
      'sql' => 'SELECT id, name, value 

        FROM 
        statistics', 

      'totalCount' => $count, 
      'key'  => 'id', 
     ]); 

    return $this->render('statistics', 
    [ 
     'dataProvider'  => $dataProvider, 

    ]); 

とGridViewの:

GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'columns' => [ 
      'id', 
      'name', 

     ], 

    ]); ?> 

私は列 'vlues' を追加

結果であったように:

1 |ジョン| {"key1": "abs"、 "key2": "qwe"}、 "data2":{"key1": "asd"、 "key2": "obj"}}

、 助けて!

+0

のような値の列を追加することができると思います。 – Beowulfenator

+0

テーブルの中にテーブルがあるように思えますか?私はgridviewがこれをサポートしているとは思わない。あなたが行うことができるのは、カスタム列を作成し、jsonを解析してHTML表を出力することです。 –

+0

@Beulfulfenatorありがとうございました!!!できます –

答えて

0

私はあなたが、そのテーブルに多くの行を持っている大きな配列にすべてを変換し、 `ArrayDataProvider`を使用しない場合は、この

'columns' => [ 
     'id', 
     'name', 
     [ 
      'attribute' => 'data1', 
      'value' => function($model){ 
       return (json_decode($model->value)->data1); 
     } 
     ], 
    ], 
関連する問題