如何使用 Laravel 将查询字符串附加到分页链接

Posted

技术标签:

【中文标题】如何使用 Laravel 将查询字符串附加到分页链接【英文标题】:How to append query string to pagination links using Laravel 【发布时间】:2020-01-28 05:42:03 【问题描述】:

您好,感谢您的帮助。我做了一些研究并尝试了一些选项,但似乎无法让它正常工作。我将带有查询字符串的 URL 传递到通过传递的 URL 加载页面的函数中。但是,我也在尝试找到一种对结果进行分页的方法。有没有办法可以将查询字符串 url 传递给 Laravel 的分页链接?谢谢。

我的带有查询字符串的 URL

            <a id="searchData"class="btn btn-primary ml-1 mr-5 text-light" title="Search" type="submit" 
        onclick="ajaxLoad('url('dma/data')?startDate='+$('#startDate').val()+'&endDate='+$('#endDate').val() 
            + '&dmaNameFilter=' + encodeURI(dma_name) + '&memberNameFilter=' + encodeURI(member_name))">Search Results
        </a>

我为链接()尝试了这个:

 $data->appends(request()->query())->links() 

我的控制器中有这个:

$data = Report::where('CallDate', '>=', $start_date)->where('CallDate', '<=', $end_date)->paginate(13)->appends(request()->query());

【问题讨论】:

如果您确定 request()-&gt;query() 是一个包含 startDate/endDate / dmaNameFilter / memberNameFilter 的数组,那么刀片中的分页链接就可以了。但是在控制器中似乎不正确,我认为您应该为查询添加更多 where 条件,例如dmaNameFilter, memberNameFilter,... 【参考方案1】:

您可以通过调用将任何数据传递给分页

 $paginator->links('view.name', ['foo' => 'bar']) 

根据您的情况,我认为您想将查询字符串传递给分页器;你可以试试

 $paginator->links('view.name', request()->getQueryString() ) 

如果您需要为您的 ajax 控制器附加查询字符串,您最好检查 https://github.com/spatie/laravel-query-builder

【讨论】:

太棒了!我会试试这个。感谢您的帮助。【参考方案2】:

你也可以添加这个:

$this->app->resolving(\Illuminate\Pagination\LengthAwarePaginator::class, function ($paginator) 
   return $paginator->appends(Arr::except(request()->query(), $paginator->getPageName()));
);

给你的 AppServiceProvider

【讨论】:

【参考方案3】:

试试这个

$data->appends(request()->input())->links()

【讨论】:

以上是关于如何使用 Laravel 将查询字符串附加到分页链接的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 将哈希片段参数附加到分页 URL

laravel 5.2 分页链接中添加随机字符

Laravel 分页漂亮的 URL

结果集到分页

如何将多个 UIImageViews 添加到分页 UIScrollView?

Joomla K2 通过将页码添加到分页来更改分页标题