Мы немного экспериментируем со сборщиком запросов Spatie, и я хотел бы вернуть коллекцию ресурсов.
К сожалению, когда вы добавляете фильтры в запрос, они не отправляются обратно как частьпервая, последняя, предыдущая и следующая ссылки ответа.
это наш код (просто пример с очень простым режимом ExchangeRate
:
class ExchangeRateController extends Controller
{
public function index(Request $request) {
return \App\Resources\ExchangeRate::collection(
QueryBuilder::for(ExchangeRate::class)
->allowedFilters(
Filter::exact('currency'),
Filter::scope('valid-on')
)
->paginate());
}
}
Когда мы вызываем GET /api/exchangerates
мы получаем 3 страницы по 15 записей каждая. Когда мы вызываем GET /api/exchangerates?filter[currency]=USD
, мы получаем 1 страницу только с одной записью. Это нормально, но ссылки в ответе json не получают правильных ссылок.
Без фильтра мы получаем следующие ссылки:
"links": {
"first": "https://example.com/api/exchangerates?page=1",
"last": "https://example.com/api/exchangerates?page=3",
"prev": null,
"next": "https://example.com/api/exchangerates?page=2"
}
С помощью фильтра мы получаем следующие ссылки в ответе:
"links": {
"first": "https://example.com/api/exchangerates?page=1",
"last": "https://example.com/api/exchangerates?page=1",
"prev": null,
"next": null
}
Таким образом, он выполняет свою нумерацию страниц правильно, но фильтры не включены в ссылки, что я считаю неправильным (клиент должен иметь возможность доверять этим ссылкам для получения следующая страница своего текущего выбранного набора данных...)
Есть лив любом случае, что мы можем сделать это?