【问题标题】:Laravel Algolia pagination over 1000 resultsLaravel Algolia 分页超过 1000 个结果
【发布时间】:2017-10-13 11:01:19
【问题描述】:

我正在用 Algolia 测试 Laravel。 Algolia 将搜索结果的最大数量限制为 1000。我猜这对我来说没问题。

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

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

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

有什么建议吗?

【问题讨论】:

  • 使用 Algolia 的最佳方式是在需要下一页时查询它。您能否详细说明为什么需要一次获得所有结果?您将从数据库中提取大量数据。
  • @Julien Bourdeau,我需要一次一页的结果。但是什么是正确的方法呢?请你给我指出一个帖子或页面吗?
  • 请提供有关最终结果的更多详细信息,以便我了解您想要做什么。如果你只想要一个结果,你可以使用->next() 方法,虽然我仍然不明白你真正在做什么。

标签: laravel algolia laravel-scout


【解决方案1】:

我可以通过@Amigo 对this post 进行小改动来解决问题。我的代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多