2017-09-23 4 views
0

laravel에서 페이지 매김을 만들려고합니다. 성공적으로 만들었지 만 소이 케이스에서는 실패했습니다. 내 contoller에서 다음과 같은 방법을 사용할 수 없습니다. 페이지 매김을laravel 5.4에서 사용자 정의 페이지 매김을 만드는 방법 데이터가 수집 중이 아닌 경우

컨트롤러 생성 :

public function city(city $job_city) 
    { 

     $data = privatejobcity::where('city_id', $job_city->id)->get(); 

     $private_job = []; 
     foreach ($data as $values) { 

      $private_job[] = private_jobadb::with('cities')->where('id', $values->private_jobabd_id)->paginate(5); 
     } 
$private_job = collect($private_job); 


     return view('frontend.jobTestCatagory.jobsByCities', compact('data', 'private_job')); 
    } 

을하는 나에게 결과 제공 :

Collection {#347 ▼ 

     #items: array:13 [▼ 
     0 => LengthAwarePaginator {#355 ▶} 
     1 => LengthAwarePaginator {#403 ▶} 
     2 => LengthAwarePaginator {#423 ▶} 
     3 => LengthAwarePaginator {#431 ▶} 
     4 => LengthAwarePaginator {#453 ▶} 
     5 => LengthAwarePaginator {#471 ▶} 
     6 => LengthAwarePaginator {#491 ▶} 
     7 => LengthAwarePaginator {#513 ▶} 
     8 => LengthAwarePaginator {#535 ▶} 
     9 => LengthAwarePaginator {#555 ▶} 
     10 => LengthAwarePaginator {#575 ▶} 
     11 => LengthAwarePaginator {#595 ▶} 
     12 => LengthAwarePaginator {#615 ▶} 
     ] 
    } 

내 컨트롤러 방법 내가이 줄을 제거하는 경우를 $private_job = collect($private_job);

array:13 [▼ 
    0 => LengthAwarePaginator {#355 ▶} 
    1 => LengthAwarePaginator {#403 ▶} 
    2 => LengthAwarePaginator {#423 ▶} 
    3 => LengthAwarePaginator {#431 ▶} 
    4 => LengthAwarePaginator {#453 ▶} 
    5 => LengthAwarePaginator {#471 ▶} 
    6 => LengthAwarePaginator {#491 ▶} 
    7 => LengthAwarePaginator {#513 ▶} 
    8 => LengthAwarePaginator {#535 ▶} 
    9 => LengthAwarePaginator {#555 ▶} 
    10 => LengthAwarePaginator {#575 ▶} 
    11 => LengthAwarePaginator {#595 ▶} 
    12 => LengthAwarePaginator {#615 ▶} 
] 

지금 firstItem, count 오류가 발생처럼 나는 방법은 존재하지 및 일부 다른 오류가 나는

답변

0

이 (수집 코드의 변화에 ​​따라 달라집니다 것을 매김 헬퍼를 사용하는 경우) follwing을 결과를 보여줍니다 도우미 방법 Illuminate \ Support \ Collection 클래스를 참조하십시오.

페이지 매김을 사용하려면 Illuminate \ Pagination \ AbstractPaginator 추상 클래스 (예 : Illuminate \ Pagination \ LengthAwarePaginator)를 확장하는 클래스를 사용해야합니다.

Illuminate \ Support \ Collection은 Illuminate \ Pagination \ AbstractPaginator를 확장하지 않습니다. 이런 이유로 페이지 매김이 작동하지 않습니다.

$private_job = private_jobadb::leftJoin('cities', 'cities.id', '=', 'private_jobadb.city_id') 
->where('id', $job_city->id) 
->paginate(5); 

이 가능성이 LengthAwarePaginator의 객체를 반환합니다 : 귀하의 경우와

내가 당신의 쿼리를 리팩토링하고 같은 조인 작업을하는 것이 좋습니다. 이것으로 페이지 매김이 작동합니다.

이 작업을하기 전에 관계를 확인하고 새 쿼리를 올바르게 작성하십시오.