0

我正在用 Algolia 测试 Laravel。Algolia 将搜索结果的最大数量限制为 1000。我想这对我来说很好。

我的问题是我不太能够从 Algolia 请求 1000 条搜索记录然后分页。我试过了:

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

但是我仍然让 Laravel 提供比我应该拥有的 20 个更多的页面。如果超过 1000 条,它会为所有可用记录分页。

有什么建议么?

4

1 回答 1

-1

我可以通过@Amigo对这篇文章进行一些小改动来解决这个问题。我的代码:

使用 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 分页器可以正常工作。

于 2017-10-13T03:01:19.527 回答