2017-08-09 197 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