分页 Laravel 集合
Posted
技术标签:
【中文标题】分页 Laravel 集合【英文标题】:Paginate Laravel Collection 【发布时间】:2019-04-14 01:23:23 【问题描述】:我有两个不同的查询,我合并以返回一个集合
$combinados = $histMe->merge($hist)->sortByDesc('created_at');
我以这种方式返回它们:
$final = $combinados->all();
但这会打印所有集合,我该如何分页? paginate() laravel 方法不适用于集合。以及如何从视图中控制它?
谢谢!
【问题讨论】:
它可以帮助你:***.com/a/56142421/6901246 【参考方案1】:你可以使用我很久以前写的这段代码:
您必须使用长度感知分页器:
use Illuminate\Pagination\LengthAwarePaginator;
public function paginate($items, $perPage,$setDefaultOption = true, $options = [])
if($setDefaultOption)
$options = ['path' => request()->url(), 'query' => request()->query()];
$page = Input::get('page', 1); // Get the current page or default to 1
$items = $items instanceof Collection ? $items : Collection::make($items);
return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
【讨论】:
【参考方案2】:新版本中的 api 略有变化。要对集合进行分页,您现在需要使用 forPage。
forPage 方法有两个参数:
forPage(int $page, int $perPage)
所以你可以在你的控制器中做这样的事情:
...
public function index(Request $request)
$combinados = $histMe->merge($hist)->sortByDesc('created_at');
$combinados->forPage($request->get('page'), 25);
...
【讨论】:
刀片视图中如何控制分页? @AlejandroParedes 分页由第一个参数控制,每页的项目数量由第二个参数控制。您可以将任何您想要的内容返回到刀片视图。通常分页由page
url 参数控制。以上是关于分页 Laravel 集合的主要内容,如果未能解决你的问题,请参考以下文章