Laravel 分页方法不适用于地图集?

2022-08-30 20:30:39
$items = Item::with('product')->paginate(10);

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

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

在控制台上的“我的视图”边栏选项卡中,未显示对象?


答案 1

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

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

此外,由于分页器的项是一个集合。您可以直接在foreach$items

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

答案 2

一个简单的解决方案是像这样使用:tap()

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

帮助程序始终返回其参数,因此您可以调用所需的任何函数,但仍返回分页器实例。这通常用于像这样的实例,其中函数返回布尔值,但您仍然希望返回对象。tap()return tap($user)->save()save$user


推荐