Laravel系列,分页出售直至当前行的产品

时间:2018-07-11 02:43:00

标签: php laravel laravel-5 eloquent

我正在尝试创建一个包含每个订单已售产品的订单面板。在商品名称旁边,我还显示了该商品的当前库存和已售出的数量[例如产品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”计数将重置。

我认为我的想法已用尽,在我的能力范围内,我无法执行此功能。你们有什么想法吗,或者分页可以完全做到吗?也许我在想错误的方式,应该以其他方式完成? 我们将不胜感激任何帮助或指示。

谢谢您的帮助。

0 个答案:

没有答案