Это мой контроллер:
public function branchesNearby($lat, $lng)
{
$branches = Branch::all();
//Calculate distance between each branch and client
//Radius of earth is 6371 KM so multiply the result with radius of earth 6371*pi/180
foreach ($branches as $branch){
$branch['distance'] = sqrt(pow(($branch->lat - $lat), 2) + pow(($branch->lng - $lng), 2)) * 108;
}
//Sort by nearest first
$sortedBranches = $branches->sortBy('distance');
return BranchResource::collection($sortedBranches);
}
Вы можете видеть, что я создал дополнительный атрибут для вычисления расстояния между местоположением пользователя и местоположением филиала. Затем я сортирую модель филиала по расстоянию. Тем не менее, API-ответ, который я получаю: API-ответ
Вы можете видеть, что это объект. Мне не нужны клавиши «2», «0» и «1». Мне нужно удалить эту дополнительную упаковку, и мне нужно, чтобы это был массив таких объектов: Правильный API, но без сортировки Конечно, это сортировка, которая заставляет его становиться объектом? Я пробовал много других способов, одним из которых было:
$sortedBranches = $collection->sortBy('distance');
$final = $sortedBranches->values()->toJson();
и отправка этого $ final в коллекцию ресурсов. Это дает мне ошибку: «вызов функции-члена first () для строки в файлах API-ресурсов». Это должно быть что-то маленькое, но мне действительно нужна помощь.
Обновление: я не публиковал свой ресурс раньше, вот как это выглядит:
public function toArray($request)
{
return [
'id' => $this->id,
'shop' => $this->shop->name,
'shop_image' => asset('api/images/' . $this->shop->image_file),
'lat' => $this->lat,
'lng' => $this->lng,
'shop_logo' => asset('api/images/' . $this->shop->logo_file),
'distance' => $this->distance . " KM"
];
Ошибка, которую я получаю, если использую :
$sortedBranches = $branches->sortBy('distance')->values()->all();
return BranchResource::collection($sortedBranches);
: Ошибка
Обновление 3:
Если я не вызову коллекцию ресурсов и просто выведу $ sortedBranches вот так:
return response()->json($sortedBranches, 200);
Здесь формат ответа API правильный, но данные неверные. Вот как это выглядит: $ sortedBranches
Есть ли способ, которым я могу манипулировать $ sortedBranches и показывать вывод, как с BranchResource?