Laravel 5.4从数据库中获取json

时间:2017-03-21 11:42:13

标签: javascript arrays json laravel-5.4 laravel-eloquent

我只是想问一下,因为laravel 5.4删除了fetch方法... 什么是我可以用于我的代码的最佳选择。 这是我的代码:

@php

    $someArray = array();

//循环查询并将结果推送到$ someArray;

    while ($row = $query->fetch_assoc()) {
        array_push($someArray, array(
       'title' => $row['school_name'],
       'lat' => $row['latitude'],
       'lng' => $row['longitude'],
       'description' => $row['enrollment_sy_2014_2015']
        ));

    }

    // Convert the Array to a JSON String and echo it
    $someJSON = json_encode($someArray);
    echo $someJSON;

   @endphp

因为我需要'title','lat','lng'和'description'作为我地图的变量.. 这是我的地图的代码:我希望任何人都可以提供帮助:))

function LoadMap() {
    var mapOptions = {
        center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
        zoom: 10,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("dvMap"), mapOptions);

    //Create and open InfoWindow.
    var infoWindow = new google.maps.InfoWindow();

    for (var i = 0; i < markers.length; i++) {
        var data = markers[i];
        var myLatlng = new google.maps.LatLng(data.lat, data.lng);
        var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: data.title
        });

        //Attach click event to the marker.
        (function (marker, data) {
            google.maps.event.addListener(marker, "click", function (e) {
                //Wrap the content inside an HTML DIV in order to set height and width of InfoWindow.
                infoWindow.setContent("<div style = 'width:200px;min-height:40px'>" + data.description + "</div>");
                infoWindow.open(map, marker);
            });
        })(marker, data);
    }
}

1 个答案:

答案 0 :(得分:0)

如果您使用Eloquent,Laravel会在您的集合和模型上提供toJson()方法。

https://laravel.com/docs/5.4/eloquent-serialization#serializing-to-json

您还可以使用json()方法转换响应。

在你的情况下,它可能是这样的:

    foreach($collection as $item) {
        $data[] = [
            'title' => $item->school_name,
            'lat' => $item->latitude,
            'lng' => $item->longitude,
            'description' => $item->enrollment_sy_2014_2015
        ];
    }
    return response()->json($data);