Laravel 5搜索和分页URL在一起

时间:2018-03-31 07:01:45

标签: laravel search scope pagination eloquent

我有一个搜索按钮和分页系统。他们工作得很好。但是当我搜索某些内容并且页面被数字分页时。点击下一页后。搜索查询消失了。之后,所有值都进入第2页。未搜索的值。

我的搜索按钮更改网址,如/en/news?q=foo

我的分页正在改变这样的网址(默认顺便说一句)/en/news?page=2

我怎样才能并排添加。或者我该如何解决问题。我打开任何解决方案。

我正在使用搜索范围。

public function scopeSearch($query, $search) {
    return $query->where('title', 'LIKE', '%' .$search. '%')
        ->orWhere('sub_body', 'like', '%' .$search. '%')
        ->orWhere('body', 'like', '%' .$search. '%');
}

这也是我的控制器:

public function index (Request $request){

    $localeCode = LaravelLocalization::getCurrentLocale();
    $updates = Update::latest()->take(3)->get();
    $query = $request->get('q');
    if ($query){
        $new = $query ? News::search($query)->orderBy('id', 'desc')->paginate(10):News::all();
        return  view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
    }
    else
    {
        $new = News::orderBy('id', 'desc')->paginate(10);
        return  view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
    }

}

我希望我能表达自己的意见。

3 个答案:

答案 0 :(得分:4)

{{ $users->appends($_GET)->links() }}

将所有过滤器值附加到一行

答案 1 :(得分:1)

displaying pagination results的文档中对此进行了解释:

  

附加分页链接

     

您可以使用appends方法附加到分页链接的查询字符串。例如,要将sort = votes附加到每个分页链接,您应该进行以下调用以追加:

{{ $users->appends(['sort' => 'votes'])->links() }}

我发现你当前的代码很混乱。我想你可以像这样重写它

public function index (Request $request){
    $localeCode = LaravelLocalization::getCurrentLocale();
    $updates = Update::latest()->take(3)->get();
    $query = $request->get('q');

    $new = $request->filled('q') ? News::search($query) : News::query();
    $new = $new->orderBy('id', 'desc')->paginate(10);

    return view('frontend.news', compact('localeCode', 'updates', 'new', 'query'));
}

并且在视图中您必须使用

{{ $new->appends(['q' => $query])->links() }}

答案 2 :(得分:0)

尝试使用{{$ collection->追加(request() - > all()) - > links()}}