Laravel Algolia разбиение на страницы более 1000 результатов

Я тестирую Laravel с Algolia. Algolia ограничивает максимальное количество результатов поиска до 1000. Думаю, меня это устраивает.

Моя проблема в том, что я не совсем могу запросить 1000 поисковых записей из Алголии, а затем разбить на страницы. Я попытался:

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

Но у меня все еще есть Laravel, предоставляющий больше страниц, чем 20, которые я должен иметь. Он разбивает на страницы все доступные записи, если их более 1000.

Какие-либо предложения?


person SuperOcean    schedule 13.10.2017    source источник
comment
Лучший способ использовать Algolia — запрашивать ее, когда вам нужна следующая страница. Не могли бы вы уточнить, почему вам нужно получить все результаты сразу? Вы будете извлекать много данных из своей базы данных.   -  person Julien Bourdeau    schedule 13.10.2017
comment
@Julien Bourdeau, мне нужны результаты по одной странице за раз. Но как правильно это сделать? Не могли бы вы указать мне на сообщение или страницу?   -  person SuperOcean    schedule 13.10.2017
comment
Пожалуйста, предоставьте более подробную информацию о конечном результате, чтобы я мог понять, что вы пытаетесь сделать. Если вам нужен только один результат, вы можете использовать метод ->next(), хотя я до сих пор не понимаю, что вы на самом деле делаете.   -  person Julien Bourdeau    schedule 16.10.2017


Ответы (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 теперь работает нормально.

person SuperOcean    schedule 13.10.2017