在laravel集合中使用where后缺少分页信息



我试图在集合内设置一个距离变量,并再次过滤集合中使用距离作为参考的集合。但是在对集合进行过滤之后,分页元信息和链接信息就消失了。那么如何保存分页信息和使用where in集合呢?这是我的代码。

$items = $items->paginate(15);
foreach($items as $item){
$distance = $this->itemSearchService->findDistance($item->post_code, $request->post_code);
$item->setAttribute('distance', $distance);
}
if(isset($request->distance)){
$items = $items->where('distance', '<=', $request->distance);
}
return new ItemSearchListCollection($items);

您希望在执行筛选之后执行paginate。然后,您还可以将withQueryString()方法添加到items中以保留查询字符串。

foreach($items as $item){
$distance = $this->itemSearchService->findDistance($item->post_code, $request->post_code);
$item->setAttribute('distance', $distance);
}
if(isset($request->distance)){
$items = $items->where('distance', '<=', $request->distance);
}
return new ItemSearchListCollection($items->paginate(15)->withQueryString());

最新更新