2017-10-13 65 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分页程序现在能正常工作。