假设我有一个有关系的购物车:
public function items()
{
return $this->belongsToMany(Item::class, 'cart_item', 'cart_id', 'item_id')->withPivot('quantity');
}
假设我$carts
每个都有多个,$cart->items
并且我想生成此购物车中所有项目的列表,其中总和为pivot.quantity
.
例如:
[
{'item': Apple, 'pivot.quantity': 2},
{'item': Orange, 'pivot.quantity': 1},
]
[
{'item': Apple, 'pivot.quantity': 4},
{'item': Banana, 'pivot.quantity': 1},
]
会产生
[
{'item': Apple, 'pivot.quantity': 6},
{'item': Banana, 'pivot.quantity': 1},
{'item': Orange, 'pivot.quantity': 1},
]
我的想法是首先遍历所有$carts
内容以生成如下列表:
[$cart[0]->items[0], $cart[0]->items[1], …, $cart[n]->items[n]]
是否有可能在一行中实现这样的目标?
然后 summation 将是微不足道的groupBy('item')
,然后是适当的sum
。