无法从PHP服务器端向Vue前端返回正确的格式

时间:2019-01-16 10:21:02

标签: php json laravel

我的目标是对具有经度和纬度记录的数据库进行GET axios / ajax调用,然后将每条记录的2个经度和纬度组合为一个{lat: 20, lng: 20}格式的单个JSON对象。目前我有这个:

public function getLocations(Request $request){
    $locations = Location::where('user_id', 1)->get()->toJson();

    return response()->json([
        'locations' => $locations,
        'message' => 'Successfully added locations!'
    ], 201);
}

我需要以某种方式传递json对象数组。我相信它应该像这样:

$locations = [   {lat: 10, lng: 10},
    {lat: 11, lng: 11},
    {lat: 12, lng: 12}
]

为$ locations中的每条记录提供一个JSON对象。纬度和经度位于$ locations中。例如$ locations-> lat和$ locations-> lng。我将如何创建可以在前端使用的对象?

[{"id":40,"user_id":1,"lat":42,"lng":24,"created_at":"2019-01-16 10:14:40","updated_at":"2019-01-16 10:14:40"},
{"id":41,"user_id":1,"lat":43,"lng":25,"created_at":"2019-01-16 10:14:41","updated_at":"2019-01-16 10:14:41"}]

2 个答案:

答案 0 :(得分:1)

您可以这样做:

public function getLocations(Request $request){
    $locations = Location::where('user_id', 1)->get();

    $locationsData= [];
    foreach ($locations  as $location) {
        $locationsData[] = ['lat' => $location->lat, 'lng' => $location->lng];
    }
    return response()->json([
        'locations' => $locationsData,
        'message' => 'Successfully added locations!'
    ], 201);
}

答案 1 :(得分:0)

尝试一下,只有一行代码:

$locations = Location::where('user_id', 1)->get(['lat', 'lng'])->toJson();
相关问题