Удалить строку из нумерации страниц внутри преобразования - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть переменная, которая является объектом пагинациисоответствует определенному условию.Я не хочу, чтобы он был удален до тех пор, пока я не смогу использовать данные.Ниже приведен пример.

$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);
    }
}

Это из этого вопроса.

Как сбросить (удалить) элемент коллекции после его извлечения?

Я предполагаю, что тот факт, что я имею дело с нумерацией страниц, возможно, делает эти ответы неприменимо к моей ситуации.

1 Ответ

0 голосов
/ 25 февраля 2019

Выполнение отдельной коллекции нумерации страниц с помощью filter() позволяет удалять элементы из нумерации страниц в сложных условиях.Я возвращаю false в преобразовании, а затем просто нацеливаю его на фильтр.

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

Edit: Это фактически удалило свойства пагинации, поэтому я воссоздал нумерацию страниц позже, вот так

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