gpt4 book ai didi

php - 从转换内部的分页中删除行

转载 作者:行者123 更新时间:2023-12-02 00:22:46 25 4
gpt4 key购买 nike

我有一个分页对象变量

$pagination

我正在使用 transform 改变里面的东西

$pagination->getCollection()->transform(function ($item, $key) use(&$data, &$pagination) {
$item->foo = 'bar';
}

如果某个项目满足特定条件,我想将其从分页中移除。在我能够使用数据之前,我不想删除它。下面是一个例子。

$pagination->getCollection()->transform(function ($item, $key) use(&$data, &$pagination) {
$data[] = $item->foo;
if ($item->foo === 'bar') {
$item->remove();
}
}

我也试过在转换中使用 $pagination->getCollection()->forget($key);

$pagination->getCollection()->transform(function ($item, $key) use(&$data, &$pagination) {
$data[] = $item->foo;
if ($item->foo === 'bar') {
$pagination->getCollection()->forget($key);
}
}

这是来自这个问题。

How to unset (remove) a collection element after fetching it?

我猜我正在处理分页的事实可能使这些答案不适用于我的情况。

最佳答案

使用 filter() 单独收集分页允许根据复杂条件从分页中删除项目。我在转换中返回 false,然后简单地在过滤器中定位它。

$pagination = $pagination->getCollection()->filter(function ($item) {
return $item;
});

编辑:这实际上删除了分页属性,所以我之后像这样重新创建了分页

// 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()
]
]
);

关于php - 从转换内部的分页中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54874270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com