分页 + URL Laravel 7 中的参数

Pagination + URL Params in Laravel 7

如果我去http://app.test/visitor?interval=week,我会看到这个

问题

我一点击第二个,就被重定向到:http://app.test/visitor?page=2

它删除了我的 interval=week,这破坏了我每周查看的查询视图。


代码

这就是我构建页面的方式

public function index()
{
    $inputs    = Request::all();
    $interval  = '';

    if(array_key_exists('interval', $inputs)){
        $interval  = $inputs['interval'];
    }

    switch ($interval) {
        case 'day':
        $visitors = Visitor::where('created_at', '>', now()->today())->paginate(10);;
        break;
        case 'week':
        $visitors = Visitor::where('created_at', '>', now()->subMonth())->paginate(10);;
        break;
        case 'month':
        $visitors = Visitor::where('created_at', '>', now()->subMonth())->paginate(10);;
        break;
        case 'year':
        $visitors = Visitor::where('created_at', '>', now()->subYear())->paginate(10);
        break;
        default:
        $visitors = Visitor::orderBy('updated_at', 'desc')->paginate(10);
        break;
    }


    return View::make('layouts.be.visitors.index', get_defined_vars());
} 

查看

{!! $visitors->render() !!}

目标

就是保持同一个视图,像这样

http://app.test/visitor?interval=week&page=2

是否必须覆盖默认分页功能?

我该如何解决这个问题?

我想我找到了答案。我更新了我的观点

{!! $visitors->render() !!}

{!! $visitors->appends(Request::except('page'))->render() !!}

它不再替换我当前的 URL 参数。

您的解决方案有效,但有一个内置方法可以在 Laravel 7 中实现您想要的结果。

{{ $visitors->withQueryString()->links() }}

您可以在随附的 PR 中看到您的确切问题已得到解决:https://github.com/laravel/framework/pull/31648

仅供参考,links() 在 Laravel 5.3

中替换了 render()