我正在尝试创建一个包含每个订单的已售产品的订单面板 . 在项目名称旁边,我还显示该产品的当前库存和销售数量[例如产品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访问 .

现在,假设我有类似下图所示的内容,

Order Panel Image

我想要做的是将第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”计数被重置 .

我想我的想法已经耗尽,而且在我的能力范围内,我无法完成这项功能 . 你们有什么想法可以做到这一点,或者是否可以通过分页完成?也许我在想错误的方法,这应该以其他方式完成?任何帮助或指导将非常感激 .

谢谢您的帮助 .