Php Ajax响应未以排序形式返回laravel controller
我从数据库中提取数据,然后再向该对象添加一个属性,即距离。并根据该属性对对象数据进行排序。当我在控制器中添加dd()时,它会检查数据是否已排序。我看到数据是经过排序的,但当我将其作为JSON响应返回时,它将从数据库返回 控制器功能Php Ajax响应未以排序形式返回laravel controller,php,json,laravel,laravel-5,Php,Json,Laravel,Laravel 5,我从数据库中提取数据,然后再向该对象添加一个属性,即距离。并根据该属性对对象数据进行排序。当我在控制器中添加dd()时,它会检查数据是否已排序。我看到数据是经过排序的,但当我将其作为JSON响应返回时,它将从数据库返回 控制器功能 public function search(Request $request) { $providers = Provider::get()->map(function($item) use($request){ $i
public function search(Request $request)
{
$providers = Provider::get()->map(function($item) use($request){
$item->setAttribute('distance',$this->addDistanceToProvider($item,$request)) ;
return $item;
})->sortBy('distance');
dd($providers);
return response()->json($providers);
}
由于
sortBy()
的结果保留了原始数组键,因此当作为json响应发送时,它在javascript中作为对象(对象)接收,而在javascript中,对象是未排序的
因此,我们需要在sortBy()
之后链接values()
,以重置键,这将导致javascript接收一个数组(对象),从而保留在控制器中完成的排序
公共功能搜索(请求$Request)
{
$providers=Provider::get()->map(函数($item)使用($request){
$item->setAttribute('distance',$this->addDistanceToProvider($item,$request));
返回$item;
})->排序方式(“距离”)->值();
返回响应()->json($providers);
}
尝试此操作,排序顺序也将保留在前端