2017-10-13 74 views
0

我正在用Algolia測試Laravel。 Algolia將搜索結果的最大數量限制爲1000.我想這對我來說很好。Laravel Algolia超過1000個結果的分頁

我的問題是,我不太可以從阿爾戈利亞請求1000條搜索記錄,然後分頁。我想:

$result = Model::search(request()->keywords)->take(1000)->paginate(50); 

但我仍然有Laravel提供了比我應該有20多頁。它爲所有可用記錄分頁,如果有超過1000個。

有什麼建議嗎?

+0

使用Algolia的最佳方式是在需要下一頁時查詢它。你能否詳細說明爲什麼你需要一次獲得所有結果?您將從數據庫中提取大量數據。 –

+0

@Julien Bourdeau,我一次只需要一頁結果。但是,做什麼是正確的方法?你能不能指點我的帖子或網頁? – SuperOcean

+0

請提供更多關於最終結果的詳細信息,以便我能理解你正在嘗試做什麼。如果你只想得到一個結果,你可以使用' - > next()'方法,儘管我仍然沒有得到你真正做的。 –

回答

-1

我可以通過@Amigo對this post進行一些修改來解決問題。我的代碼:

use Illuminate \ Pagination \ LengthAwarePaginator;

protected $perPage = 50; 

public function search() 
{ 

    $results = Model::search(request()->keywords)->take(1000)->get(); 

    $results = new LengthAwarePaginator(
     $results->slice((LengthAwarePaginator::resolveCurrentPage() * 
     $this->perPage)-$this->perPage, 
     $this->perPage)->all(), count($results), 
     $this->perPage, null, ['path' => '']); 

    return view('/searchResult', compact('results')); 

} 

使用標準Laravel分頁程序現在能正常工作。