Как заполнить META и LINKS pagination на laravel? - PullRequest
1 голос
/ 30 июня 2019

Мне нужна помощь, чтобы заполнить этот вид нумерации на красноречивых словах.

{
  "meta": {
    "count": 10,
    "total": 100
  },
  "links": {
    "first": "http://localhost/page[limit]=10&page[offset]=0",
    "last": "http://localhost/page[limit]=10&page[offset]=10",
    "next": "http://localhost/page[limit]=10&page[offset]=10",
    "prev": "null"
  },
  "data": [
    {
      "type": "checklists",
      "id": "1"
    }
  ]
}

Я пробовал этот код на Laravel Eloquent.

$data = Model::select('type','id')->paginate(10);
return response()->json(
    [
        'data' => $data
    ],200
);

Но он показывает другой формат, схемы META и LINKS для заполненных данных нет.

{
    "data": {
        "current_page": 1,
        "data": [
            {
                "type": "Mechanical Equipment Sales Representative",
                "id": 1
            }
       ],
        "first_page_url": "http://localhost?page=1",
        "from": 1,
        "last_page": 4,
        "last_page_url": "http://localhost?page=4",
        "next_page_url": "http://localhost?page=2",
        "path": "http://localhost",
        "per_page": 10,
        "prev_page_url": null,
        "to": 10,
        "total": 39
    }
}

Как это сделать? Пожалуйста, помогите?

1 Ответ

1 голос
/ 30 июня 2019

Вы можете использовать ресурсы API: https://laravel.com/docs/eloquent-resources#pagination

Создать ресурс коллекции:

php artisan make:resource ModelCollection

Использовать его в своем контроллере:

$data = Model::select('type','id')->paginate(10);

return new ModelCollection($data);

Для люмена,создать app/Http/Resources/ModelCollection.php файл:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class ModelCollection extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}
...