foreach over object array无法正常工作

时间:2014-04-21 16:41:43

标签: php jquery laravel-4

我使用Charts,js by devex(点击here查找文档的链接)。我也使用Laravel框架。我需要在服务器端生成一些JQuery来输出我想要的图形。我正在我的控制器中传递$json_micromarket_participants这是一个对象数组(来自数据库查询的行) json_encoded 。每个对象都有Home_nameAverage_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);

2 个答案:

答案 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)