JSON Decode в Cgridview

В настоящее время я использую cgridview (Yii) для отображения ланча и пользователей этого ланча. Пользователи хранятся в JSON в базе данных, и мне интересно, как отобразить это в декодированном виде в том же виде, что и остальная часть моей таблицы.

Код является:

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'lunch-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'date',
'cook',
'food',
'price',
'users',
array(
'class'=>'CButtonColumn',
),
),
)); ?>

Я думал о чем-то вроде этого, но тогда поле фильтра вверху исчезает …

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'lunch-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'date',
'cook',
'food',
'price',
array( 'header' =>'Users',
'type'=>'raw',
'value'=> 'implode(", ", CJSON::decode($data->users))',
),
array(
'class'=>'CButtonColumn',
),
),
)); ?>

Как я могу решить это?

0

Решение

Вы также можете добавить метод к модели

public function getDecodeUsers(){
return implode(",", CJSON::decode($this->users));
}

и использовать

array(
'name' => 'decodeUsers',
'header' => 'Users'
),
0

Другие решения

В коде отсутствует важное утверждение.

Пытаться —

array(
'name' => 'users',
'header' => 'Users',
'type'=> 'raw',
'value'=> 'implode(", ", CJSON::decode($data->users))',
),

Ключ ‘name’ необходим для фильтров.

0

По вопросам рекламы [email protected]