未定义的偏移:在分页Laravel期间为1

时间:2017-01-31 17:11:01

标签: php mysql laravel pagination laravel-5.3

我已经设置了一个查询,通过搜索表单从数据库中搜索游览,并将分页应用于结果。以下是查询:

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但是没有遇到像这样的问题。

2 个答案:

答案 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