如何使用 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()->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 将查询字符串附加到分页链接的主要内容,如果未能解决你的问题,请参考以下文章