【问题标题】:Laravel 5 Search and pagination url's togetherLaravel 5搜索和分页网址在一起
【发布时间】:2018-09-10 03:05:03
【问题描述】:

我有一个搜索按钮和分页系统。他们工作得很好。但是当我搜索一些东西时,页面是用数字分页的。点击下一页后。搜索查询不见了。之后,所有值都进入第 2 页。未搜索的值。

我的搜索按钮更改网址像这样/en/news?q=foo

我的分页正在像这样更改网址(默认 btw)/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'));
    }

}

我希望我能表达自己的观点。

【问题讨论】:

    标签: laravel search scope pagination eloquent


    【解决方案1】:
    {{ $users->appends($_GET)->links() }}
    

    将所有过滤器值附加在一行中

    【讨论】:

      【解决方案2】:

      displaying pagination results的文档中有解释:

      附加到分页链接

      您可以使用 appends 方法附加到分页链接的查询字符串。例如,要将 sort=votes 附加到每个分页链接,您应该对 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() }}
      

      【讨论】:

      • @AliÖzen 我在答案中添加了更多代码,也许对您有帮助。我重写该方法的原因是您基本上在不同的查询构建器上做了两次相同的事情,如果您将来扩展分页列表的功能,这可能会很麻烦(因为您总是必须做两次)。有了以上这些,你应该可以一次做所有的事情了。
      • 搜索+分页现在完美运行。但我现在正在看你的。再次感谢。矿山非常复杂。你是对的。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-19
        • 1970-01-01
        • 2014-11-02
        • 2015-02-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-25
        相关资源
        最近更新 更多