Laravel paginate method not working with map collection?

后端 未结 2 575
北恋
北恋 2021-02-19 09:28
$items = Item::with(\'product\')->paginate(10);

    $items = $items->map(function($product){
          $product->name = \"Test\";
          return $product; 
          


        
相关标签:
2条回答
  • 2021-02-19 10:09

    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";
    }
    
    0 讨论(0)
  • 2021-02-19 10:18

    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);
    
    0 讨论(0)
提交回复
热议问题