代码之家  ›  专栏  ›  技术社区  ›  Ali Özen

Laravel 5搜索和分页url一起

  •  1
  • Ali Özen  · 技术社区  · 6 年前

    我有一个搜索按钮和分页系统。它们工作得很好。但当我搜索一些东西时,页面上有数字分页。单击下一页后。搜索查询已取消。之后,所有值将进入第2页。未搜索值。

    我的搜索按钮更改url如下 /en/news?q=foo

    我的分页正在像这样更改url(默认btw) /en/news?page=2

    如何将此并排添加。或者我该如何解决这个问题。我对任何解决方案都持开放态度。

    我正在使用scope进行搜索。

    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 回复  |  直到 6 年前
        1
  •  5
  •   Ravindra Bhanderi    6 年前
    {{ $users->appends($_GET)->links() }}
    

    将所有筛选值附加到一行中

        2
  •  1
  •   Namoshek    6 年前

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

    附加到分页链接

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

    {{ $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() }}
    
        3
  •  0
  •   cezar62882    6 年前

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