yii2在gridview中显示序列化数据

qq24tv8q  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(373)

我有一些数据以序列化格式存储。
我可以拉取数据,并将其显示在视图中,就像这样供登录用户使用:

$user_id = Yii::$app->user->identity->id;
$kids=unserialize($model->kids);
$children =\app\models\UserChildren::find()->where(['user_id' =>$user_id])->andwhere(['id'=>$kids])->all();
?>                              
<?php  foreach ($children as $child): ?>
<table class="table table-bordered table-hover">
<tr>
<th><?php echo Yii::t('app', 'Kids Name')?> : </th>
<td><?php echo $child->child_name?>  </td>
<th><?php echo Yii::t('app', 'Kids Birth Date')?> : </th>
<td><?php echo $child->child_birth_date?>  </td>
<th><?php echo Yii::t('app', 'Kids Gender')?> : </th><td><?php echo $child->child_gender?>  </td>
</tr>
</table> 
<?php  endforeach; ?>

kids数据存储在这样的order表中,该表链接到userchildren表。

s:0:"";
a:4:{i:0;s:2:"10";i:1;s:2:"11";i:2;s:2:"25";i:3;s:2:"26";}  
a:2:{i:0;s:2:"10";i:1;s:2:"11";}

我尝试在gridview中显示相同的内容,但无法确定如何实现这一点:
例如,如果我使用

[
  'label'=> 'Child',
  'value' => function($data){                         
          return $data->order->kids;
    }
         ],

我得到的数据和我显示的一样。我也试过foreach,但是我得到了无效的foreach参数。

1sbrub3j

1sbrub3j1#

我不确定我做的是否正确,但它似乎有正确的数据。
我使用的代码如下:

[
'label'=> 'Child',
'value' => function($data){                
$kids=((unserialize($data->order->kids)));    
$children1=ArrayHelper::map(\app\models\UserChildren::find()->where(['id'=>$kids])->all(),'id','child_name');
return implode(', ',$children1);

     }
  ],

相关问题