关于商品销量更新的疑惑

$product   = $item->product;
            // 计算对应商品的销量
            $soldCount = OrderItem::query()
                ->where('product_id', $product->id)
                ->whereHas('order', function ($query) {
                    $query->whereNotNull('paid_at');  // 关联的订单状态是已支付
                })->sum('amount');
            // 更新商品销量
            $product->update([
                'sold_count' => $soldCount,
            ]);

假如在订单量数据很大的情况下,是否不考虑这种方式,这种方式每次都要遍历数据的商品成交信息,能不能直接在已有基础上递增会不会更好,(每成交一单,拿到这单关于这个商品的销售情况,再在原商品的基础上增加),就不要每次遍历订单信息吧

每天3小时...加油
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
leo
最佳答案

用自增也可以。

这么写是我的一种编码思路,会预先想到一些非正常情况,比如被人手动修改了 sold_count

5年前 评论
讨论数量: 2
leo

用自增也可以。

这么写是我的一种编码思路,会预先想到一些非正常情况,比如被人手动修改了 sold_count

5年前 评论

@leo比如被人手动修改了 sold_count 值这种情况怎么出现,抓包吗

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!