如何在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的对象。有了这个你的分页将是工作。
在此之前,请验证关系并正确编写新的查询。