LaravelでAPIのレスポンスとしてページネーションを使いたかった(参考:ページネーション)が、pagenateで生成されたリンクURLから、アクセス時のGETパラメータが削除されてしまっていたので、正しく引き継がれるように対応した。
例
リクエストURL:https://example.com/users?per_page=100&page=1
修正前
pagenateで生成されるURLにper_pageのクエリがつかない。
$users = User::paginate($per_page);
$users->nextPageUrl(); // https://example.com/api/v1/users?page=2
修正後
appendsすることでpage以外のクエリも追加された。
// page以外のパラメータを取得
$params = $request->except('page');
// appendsで付与
$users = User::paginate($per_page)->appends($params);
$users->nextPageUrl(); // https://example.com/api/v1/users?per_page=100&page=2
かんたん、便利