Goo*_*ose 2 php laravel laravel-pagination
我有一个变量,它是分页对象
$pagination
Run Code Online (Sandbox Code Playgroud)
我正在使用转换来改变它里面的东西
$pagination->getCollection()->transform(function ($item, $key) use(&$data, &$pagination) {
$item->foo = 'bar';
}
Run Code Online (Sandbox Code Playgroud)
如果某个项目满足特定条件,我想从分页中删除该项目。在我能够使用这些数据之前,我不想将其删除。下面是一个例子。
$pagination->getCollection()->transform(function ($item, $key) use(&$data, &$pagination) {
$data[] = $item->foo;
if ($item->foo === 'bar') {
$item->remove();
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过$pagination->getCollection()->forget($key);在转换内部使用
$pagination->getCollection()->transform(function ($item, $key) use(&$data, &$pagination) {
$data[] = $item->foo;
if ($item->foo === 'bar') {
$pagination->getCollection()->forget($key);
}
}
Run Code Online (Sandbox Code Playgroud)
就是从这个问题来的。
我猜我正在处理分页的事实可能会使这些答案不适用于我的情况。
进行单独的分页集合filter()允许根据复杂的条件从分页中删除项目。我在转换中返回 false,然后简单地将其定位到过滤器中。
$pagination = $pagination->getCollection()->filter(function ($item) {
return $item;
});
Run Code Online (Sandbox Code Playgroud)
编辑:这实际上删除了分页属性,所以我之后重新创建了分页,如下所示
// Remove already merged rows
$itemsTransformed = $pagination->getCollection()->filter(function ($item) {
return $item;
});
// Recreate because filter removed pagination properties
$itemsTransformedAndPaginated = new \Illuminate\Pagination\LengthAwarePaginator(
$itemsTransformed,
$pagination->total(),
$pagination->perPage(),
$pagination->currentPage(), [
'path' => \Request::url(),
'query' => [
'page' => $pagination->currentPage()
]
]
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3446 次 |
| 最近记录: |