2017-08-09 60 views
2

这可能有一个非常简单的解决方案,但我一直无法解决它。我需要对搜索结果进行分页,因此当我进入下一页时,它不会重置我的搜索结果。这是我想要分页:Laravel - Paginate和Append搜索结果

$pets = DB:table('pets') 
    ->where(function($q) use ($request){ 
     $q->orWhere('name','LIKE','%'.$request->search.'%') 
}) 
->paginate(40) 

上面的代码搜索我的数据库。如上所示,我可以使用paginate(40)进行分页。例如,唯一的一点是,当我进入第二页时,搜索重置。我想要的是将搜索应用到所有页面。

我尝试使用appends()$pets,$q$request,它们都没有工作。我也尝试了一些来自这里的答案,但没有得到任何结果。

从Laravel文档中,我猜测,你应该使用appends()将搜索应用到所有页面?

编辑:

@foreach($pets as $pet) 
<p>{{$pet->name}}</p> 
@endforeach 

分页:

{{$pet->links()}} 

AJAX调用:

$("#filter").change(function() { 
$value=$(this).val(); 
    $.ajax({ 
    type: "get", 
    url: "{{$pets->name}}", 
    data: {'search':$value}, 
    success: function(data){ 
     $('#results').html(data); 
    } 
}); 
}); 
+0

问题是,在第二页上你的'$ request'不包含搜索项。你使用GET还是POST? (使用GET,你会没事的)。 – Kyslik

+0

你能告诉我们你调用这个函数的代码吗? – Maraboc

+0

@Kyslik我使用'GET'进行搜索。 – spacetravel

回答

1

您认为使用这样的事情:

上述

{{ $pets->appends(\Request::except('page'))->links() }} 

代码将创建分页链接,并添加除了在它page所有参数。

+0

不幸的是,没有得到任何结果。当我进入另一个页面时,搜索仍会重置。我现在会自己尝试一些事情。 – spacetravel

+0

我尝试了其他一些不起作用的东西。搜索仍然保持重置。 – spacetravel

+0

@spacetravel好吧,你首先需要生成正确的链接;使用谷歌浏览器,并尝试将鼠标光标悬停在页面2的左下角的链接上方,您会看到链接是预期的链接? – Kyslik