我已经设置了一个查询,通过搜索表单从数据库中搜索游览,并将分页应用于结果。以下是查询:
public function search(Request $request)
{
$days = $request->days;
$days_explode = explode('|', $days);
$query= Tour::whereHas('country', function($r) use($request) {
$r->where('countries.name','=', $request->country);
})
->whereHas('category', function($s) use($request) {
$s->where('categories.name','=', $request->category);
})
->whereHas('country', function($r) use($request) {
$r->where('countries.name','=', $request->country);
})
->whereBetween('days', [$days_explode[0], $days_explode[1]])
->paginate(1);
return view('public.tour.list')->withResults($query);
}
使用以下数据填充(下拉)表单而不使用paginate
。查询在视图中返回4个结果。
country:Croatia,category:Holiday, days:10|15
当我使用paginate()
在多个页面中获取结果时,首先它运行时没有错误但是当我点击2,3之类的其他页面时。它给出了错误
Undefined offset: 1
搜索页面的网址如下所示:
http://localhost:8000/trip/search?country=croatia&category=holiday&days=10%7C15
第2页的网址如下:
http://localhost:8000/trip/search?page=2
给出错误
`Undefined offset: 1`
我之前在laravel中使用过paginate但是没有遇到像这样的问题。
答案 0 :(得分:1)
问题在于,当您转到下一页时,您不会继续查询字符串数据,因此您需要将此数据传递到您的视图,并且您可以使用以下
{{ $data->appends(Request::only('country','categorry','days'))->links() }}
这应该解决它
答案 1 :(得分:0)
您需要使用append()
方法将数据附加到分页链接:
{{ $data->appends([
'country' => 'croatia',
'category' => 'holiday',
'days' => '10%7C15'
])->links() }}
https://laravel.com/docs/5.3/pagination#displaying-pagination-results