在分形集合元数据中添加Sum

问题描述 投票:0回答:2

如何迭代集合中的所有项目以获取对象中的键的总和?

$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表中的所有值。

laravel fractals
2个回答
0
投票

也许这会奏效吗?

$sum = 0;
$totalPrice = $items->price;
foreach($totalPrice as $key=>$value){

if(isset($value->value))   
    $sum += $value->value;
}

echo $sum;

0
投票

我目前的做法:

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

谢谢你的提示。

© www.soinside.com 2019 - 2024. All rights reserved.