2017-10-13 8 views
0

나는 Algolia와 Laravel을 테스트 중입니다. Algolia는 검색 결과의 최대 수를 1000 개로 제한합니다. 어느 것이 좋을까요?Laravel Algolia 1000 페이지의 결과 매기기

내 문제는 Algolia에서 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으로 약간 변경하여 문제를 해결할 수있었습니다. 내 코드 :

Illuminate \ Pagination \ LengthAwarePaginator를 사용하십시오. 표준 Laravel의 매기기를 사용

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')); 

} 

지금은 잘 작동합니다.