Как преобразовать нумерованную коллекцию в Laravel, чтобы ответ представлял собой массив объектов - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть список, который извлекает все ветви, вычисляет расстояние между клиентом и филиалами, сортирует их и отображает результат с разбивкой по страницам. Все работает отлично, за исключением того, что когда я делаю пагинацию, я получаю ответ, такой как: Это хорошо, за исключением того, что внешняя упаковка должна быть массивом. В основном я хочу массив объектов. Это мой контроллер:

class HomescreenController extends Controller
{

    //Get a list of all the branches
    public function branchesNearby($lat, $lng) //Request $request
    {
        $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'); //->forPage(1, 2);

        $paginated = $sortedBranches->paginate(2);

        return BranchResource::collection($paginated);
    }

Чтобы исправить это, я попытался

return BranchResource::collection($paginated)->values()->all();

Это приводит к правильному форматированию, как это: enter image description here Но это удаляет мой нумерацией страниц. Кто-нибудь, пожалуйста, помогите.

Кроме того, это мой ресурс:

 public function toArray($request)
    {

        return [
            'id' => $this->id,
            'shop' => $this->shop->name,
            'shop_ar' => $this->shop->name_ar,
            'category' => $this->shop->category->name,
            'category_ar' => $this->shop->category->name_ar,
            '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"
        ];

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете сделать свою собственную нумерацию страниц, отправив лимит и номер страницы или изменив код на

$paginated->toArray()
...