Laravel paginate方法无法使用地图集合?

时间:2017-08-27 10:20:24

标签: php laravel

$items = Item::with('product')->paginate(10);

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

    return response()->json(['items' => $items]);

在我看来,控制台分页对象上的刀片没有显示?

2 个答案:

答案 0 :(得分:10)

正如在Laravel docs中给出的,Map()方法创建了一个新集合。要修改当前集合中的值,请使用transform()方法。

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

此外,因为,paginator的项目是一个集合。您可以直接在foreach

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

答案 1 :(得分:0)

您应该将数据保存在集合中,对其进行处理,然后将其注入,如下所示:

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