2016-04-04 22 views
0

Bir tablo var: id | isim | değerler |json sütun görünümüne yii2 içinde

1 | John | {"data1": {"key1": "abs", "key2": "qwe"}, "data2": {"key1": "asd", "key2": "obj"}}

her sıra jsonun farklı uzunluğu vardır. Gibi gridView oluşturmaya ihtiyacım var:

id | isim | abs | asd | ...

1 | John | qwe | obj | ...

Kodum 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, 

    ]); 

ve GridView:

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

     ], 

    ]); ?> 

Ben sütun 'vlues' eklemek

sonucuydu gibi:

1 | John | {"data1": {"key1": "abs", "key2": "qwe"}, "data2": {"key1": "asd", "key2": "obj"}}

Lütfen , yardım et!

+0

gibi değer sütununu ekleyebilirsiniz düşünüyorum. – Beowulfenator

+0

Bir masanın içinde bir masa ister misin? Izgara görüşünün bunu desteklediğini sanmıyorum. Yapabilecekleriniz özel bir sütun oluşturmak ve bir html tablosu çıkarmak için jsonunuzu ayrıştırmaktır. –

+0

@Beowulfenator Teşekkür ederim! işe yarıyor –

cevap

0

Bence bu tablodaki birçok satırı varsa büyük bir diziye şeyi dönüştürmek ve `ArrayDataProvider` kullanmıyorsanız bu

'columns' => [ 
     'id', 
     'name', 
     [ 
      'attribute' => 'data1', 
      'value' => function($model){ 
       return (json_decode($model->value)->data1); 
     } 
     ], 
    ],