我的目标是对具有经度和纬度记录的数据库进行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"}]
答案 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();