Laravel paginate method not working with map collection? Laravel paginate method not working with map collection? laravel laravel

Laravel paginate method not working with map collection?


As, given in Laravel docs, map() method creates a new collection. To modify the values in the current collection, use transform() method.

$items->getCollection()->transform(function ($product) {    $product->name = "Test";    return $product;});

Also, since, paginator's items are a collection. You can use foreach directly on $items

foreach ($items as $item){ $item->name = "Test";}


You should save the data in a collection, work on them, inject them back, something like this:

$page = Input::get('page', 1);$data = Item::with('product')->getByPage($page, 10);$tempItems = $data->items;$tempItems = $tempItems->map(function($product){      $product->name = "Test";      return $product; });$objects = Paginator::make($tempItems, $data->totalItems, 10);


An easy solution would be to just use tap() like so:

return tap(Item::with('product')->paginate(10))->map(...);

The tap() helper always returns its argument, so you can call any function you like and still return the paginator instance. This is often used in instances like return tap($user)->save(), where the save function returns a boolean but you still want to return the $user object.