如何迭代集合中的所有项目以获取对象中的键的总和?
$data = fractal()
->collection($items, new ItemTransformer())
->paginateWith(new IlluminatePaginatorAdapter($paginator))
->addMeta([
'from' => $from->toDateString(),
'till' => $till->toDateString(),
])
->toArray();
在addMeta()中我想要包含所有items-> price-> value的'total_sum'。
当我这样添加它:
$totalSum = $items->sum(function($item){
return $item->price->sum('value);
}
$data = fractal()
->collection($items, new ItemTransformer())
->paginateWith(new IlluminatePaginatorAdapter($paginator))
->addMeta([
'from' => $from->toDateString(),
'till' => $till->toDateString(),
'total_sum' => $totalSum,
])
->toArray();
它不会遍历集合,而是遍历items表中的所有值。
也许这会奏效吗?
$sum = 0;
$totalPrice = $items->price;
foreach($totalPrice as $key=>$value){
if(isset($value->value))
$sum += $value->value;
}
echo $sum;
我目前的做法:
$seller = $this->sellerRepository->findOrFail($id);
$query = $seller->items()->whereHas('baseItem');
$totalSum = $query->get()->sum(function ($item) {
return $item->baseItem->price->value;
});
$paginator = $query->paginate($request->get('_perPage', $this->sellerRepository->getPerPage()));
$items = $paginator->items();
$data = fractal()
->collection($items, new ItemTransformer())
->paginateWith(new IlluminatePaginatorAdapter($paginator))
->addMeta([
'from' => $from->toDateString(),
'till' => $till->toDateString(),
'total_sum' => $totalSum,
'page_sum' => collect($items)->sum(function ($item) {
return $item->baseItem->price->value;
}),
])
->toArray();
return response()->json($data);
}
谢谢你的提示。