我对for循环有疑问。 我只是在一列中保存json数据。 例如:
1 / John / ["jsondata1","jsondata2","jsondata3"]
2 / Elizabeth / ["jsondata3","jsondata4"]
我需要在表格中显示这些值。第3列最大数据大小总是4.没有jsondata5
我在刀片视图中创建了此循环。
<table>
@foreach($values as $value)
<tr>
<td>{{$value->id}}</td>
<td>{{$value->name}}</td>
@for ($i = 0; $i < 4; $i++)
<td>{{$value->jsondata[$i]}}</td>
@endfor
</tr>
@endforeach
</table>
在这种情况下,我遇到了一些错误。
错误是"Undefined offset: 2"
当我尝试for ($i = 0; $i < 2; $i++)
它只显示最后2个数据。
但如果我试过$i < 4
有一个错误。
为循环执行此操作的正确方法是什么? 我尝试了很多方法。
答案 0 :(得分:1)
处理此问题的最佳方法是使用强制转换。来自the docs:
在处理存储为序列化JSON的列时,数组强制转换类型特别有用。例如,如果您的数据库具有包含序列化JSON的JSON或TEXT字段类型,则在您的Eloquent模型上访问该属性时,将该属性添加到该属性将自动将该属性反序列化为PHP数组
将此添加到模型中,您将能够像使用简单数组一样使用JSON数据:
protected $casts = [
'column_name' => 'array',
];