如何在laravel 5.4中创建自定义分页时获取数据不会收集

如何在laravel 5.4中创建自定义分页时获取数据不会收集

问题描述:

我想在laravel中创建分页我成功了,但是在soe情况下im失败我在我想要的控制器中使用以下方法创建分页如何在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);显示follwing结果

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抛出一个错误,方法不存在和其他一些错误,取决于我在代码

收集(改变)是一个辅助方法参考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的对象。有了这个你的分页将是工作。

在此之前,请验证关系并正确编写新的查询。