我使用Charts,js by devex(点击here查找文档的链接)。我也使用Laravel框架。我需要在服务器端生成一些JQuery来输出我想要的图形。我正在我的控制器中传递$json_micromarket_participants
这是一个对象数组(来自数据库查询的行) json_encoded 。每个对象都有Home_name
和Average_Occupancy
属性。
出于某种原因,我的foreach循环不起作用,即我收到以下错误:
Invalid argument supplied for foreach()
我的问题有两个: 1.为什么它不起作用? 2.此代码是否仍然可以生成名称 和jquery中的值对?
代码:
@section('content')
<script type="text/javascript">
var chartDataSource = {{ $json_micromarket_participants }};
$(function () {
$("#chartContainer").dxChart({dataSource: chartDataSource,
commonSeriesSettings:{argumentField: 'Home_name'},
series: [
@foreach($json_micromarket_participants as $micromarket_participant)
{
name: '{{$micromarket_participant->Home_name}}',
valueField: '{{$micromarket_participant->Average_Occupancy}}'
},
@endforeach
]
});
})
</script>
<div id="chartContainer" style="max-width:700px; height:300px;"></div>
@stop
在控制器中,这里是如何设置$ json_micromarket_participants的。我觉得这一切都很好......
$micromarket_participants = DB::table('homes')
-> select(array('*', DB::raw('SQRT(POW('.$Eastings.' - `Eastings`,2) + POW('.$Northings.' - `Northings`,2)) AS distance')))
-> having('distance', '<', $micromarket_size)
-> get();
$json_micromarket_participants = json_encode($micromarket_participants);
答案 0 :(得分:0)
我认为您的问题是您在json_encode
对象上调用$micromarket_participants
,我认为这不会返回您想要的内容。相反,尝试在返回的集合上调用toJson
方法:
$json_micromarket_participants = $micromarket_participants->toJson();
答案 1 :(得分:0)
它无效,因为您已将$ micromarket_participants编码为json,使其成为字符串,而不是数组。
我认为$ micromarket_participants是这种情况下的对象数组,因此您应该在视图中使用它:
@foreach($micromarket_participants as $micromarket_participant)