Php Laravel paginate方法不适用于地图收集?
在控制台上的“我的视图”中,是否对未显示的对象进行分页?您应该将数据保存在集合中,对其进行处理,然后将其重新注入,如下所示:Php Laravel paginate方法不适用于地图收集?,php,laravel,Php,Laravel,在控制台上的“我的视图”中,是否对未显示的对象进行分页?您应该将数据保存在集合中,对其进行处理,然后将其重新注入,如下所示: $items = Item::with('product')->paginate(10); $items = $items->map(function($product){ $product->name = "Test"; return $product; }); return res
$items = Item::with('product')->paginate(10);
$items = $items->map(function($product){
$product->name = "Test";
return $product;
});
return response()->json(['items' => $items]);
如中所示,map()
方法创建一个新集合。要修改当前集合中的值,请使用transform()
方法
$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);
此外,因为,paginator的项目是一个集合。您可以直接在$items
$items->getCollection()->transform(function ($product) {
$product->name = "Test";
return $product;
});
您的
项目
对象不再是分页对象。你可以用standart collection来换,但我怎么能用standart collection来换呢。请举例说明你为什么把它转换成地图?你不能直接返回paginator实例吗?是的,我需要使用map方法。我知道没有map collection paginate可以很好地工作,但是当我使用map collection paginate方法时,paginator方法不工作,因为,$items
paginator实例是一个集合,你应该在$items
上使用foreach
,谢谢你的回复,但我得到了错误未定义属性:Illumb\Pagination\LengthAwarePaginator::$DataCode第三行$tempItems=$data->items,这里是来自何处的项目?我也有错误。调用未定义方法Illumb\Database\Query\Builder::getByPage()感谢您的回复,但此转换方法使用('product'))关系?它不起作用吗?我认为您可能需要在调试中查看集合:(.只是想看看你从$product
中得到了什么,我选中了所有,但当我使用transform方法工作正常时,我得到了分页对象元素,但你知道我得到的是具有产品关系的项目。在我的视图中,我无法显示产品元素。很抱歉,我不理解问题:(.您获得了$product
值,对吗?但在视图中显示这些值时遇到了问题?感谢您的帮助,transform方法工作得非常好。
foreach ($items as $item)
{
$item->name = "Test";
}