我正在尝试创建一个包含每个订单已售产品的订单面板。在商品名称旁边,我还显示了该商品的当前库存和已售出的数量[例如产品007(0/2)]
这是我当前的查询,它按作用域检索所有未完成的订单并按优先级对它们进行排序,
$orders = Order::incomplete()
->orderByRaw("shipping_method='EMS (Express) Shipping' DESC, shipping_method='Standard Air Registered' DESC, purchase_date ASC")
->paginate(100)
->appends(request()->except('page'));
通过在订单和产品之间设置多对多关系,可以通过$ order-> products访问每个订单的产品。每个产品在数据透视表中都有一个库存数量和一个销售数量,如果在foreach中循环,则都可以通过$ product-> inventory和$ product-> pivot-> sold_quantity访问。
现在,假设我有类似下图的内容,
我想做的是将第3件商品改成红色,因为尽管有库存,但由于优先级低而无法发货。
我尝试创建一个以产品ID为键和总和的新集合,但是,此方法不适用于分页,因为仅循环了100个项目。
$collection = collect([]);
$orders->map(function ($order) use($collection){
foreach($order->products as $key => $product){
$collection->put($product->id,($collection->get($product->id)+$product->pivot->sold_quantity));
$order['products'][$key]['sold_until_now'] = $collection->get($product->id);
}
return $order;
});
此后我要做的是将laravel视图中的“ sold_until_now”属性与当前库存进行比较并更改颜色。
但是,假设我们有1000个包含相同项目但在不同页面中的有效订单,当更改页面时,“ sold_until_now”计数将重置。
我认为我的想法已用尽,在我的能力范围内,我无法执行此功能。你们有什么想法吗,或者分页可以完全做到吗?也许我在想错误的方式,应该以其他方式完成? 我们将不胜感激任何帮助或指示。
谢谢您的帮助。