You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel电商站点:已实现SKU/变体系统,如何添加无独立SKU的附加定价选项至购物车

Laravel电商无SKU附加收费选项实现思路

1. 数据库结构设计

  • 核心表:product_addons(存储所有附加选项)
    字段示例:

    • id: 主键
    • product_id: 关联主产品ID(若需绑定到变体,可新增variant_id字段做可选关联)
    • name: 选项名称(如「一年延保服务」「礼品包装」)
    • description: 选项说明(可选,用于解释服务内容)
    • price_type: 加价类型(fixed固定金额 / percent百分比)
    • price_value: 加价数值(固定价填金额,百分比填0-100的数值)
    • is_required: 布尔值,标记是否为必填选项
    • group_key: 分组标识(用于互斥选项,如不同订阅时长,同组仅能选一个)
    • sort_order: 排序权重,控制前端展示顺序
    • stock_product_id: 可选,关联实体库存产品(如加购线缆时,绑定对应线缆产品ID做库存校验)
    • created_at/updated_at: 时间戳
  • 订单关联表(可选):order_item_addons
    字段:id, order_item_id, addon_id, name, price, quantity,用于单独记录订单中每个商品的附加选项,方便后续对账和售后。

2. 模型与关联配置

  • 在Product模型中定义关联:
    public function addons()
    {
        return $this->hasMany(ProductAddon::class);
    }
    
  • 若支持变体绑定专属加购选项,在Variant模型中添加相同关联:
    public function addons()
    {
        return $this->hasMany(ProductAddon::class, 'variant_id');
    }
    
  • 购物车存储建议:将选中的加购项以「名称+价格快照」的数组形式存入购物车元数据,避免后台修改加购价格后影响已加入购物车的商品总价。

3. 前端交互逻辑

  • 加载商品时,拉取对应产品/变体的加购选项,按group_key分组展示:
    • 同group_key的选项做单选处理(如订阅时长:1个月/3个月/12个月)
    • 无group_key的选项做复选处理(如礼品包装、延保服务)
  • 实时计算总价:监听选项选择事件,根据price_type计算加价,实时更新商品合计金额
  • 提交购物车时,将选中的加购项ID、名称、快照价格一并提交到后端

4. 购物车核心处理

  • 扩展Laravel Session或购物车包(如gloudemans/shoppingcart)的元数据:
    // 添加商品到购物车时携带加购项
    Cart::add([
        'id' => $variant->id,
        'name' => $variant->product->name,
        'qty' => 1,
        'price' => $variant->price,
        'options' => [
            'addons' => $request->selected_addons, // 前端提交的选中加购项数组
            'variant_name' => $variant->name,
        ]
    ]);
    
  • 总价计算:遍历购物车项,叠加主商品价格与所有选中加购项的快照价格(若用百分比加价,建议前端计算后提交快照,避免后端重复计算)

5. 订单落地与记录

  • 创建订单时,同步购物车的加购信息:
    • 若使用order_item_addons表,循环插入每条加购项记录,关联对应订单项ID
    • 若无需单独表,可将加购项序列化为JSON存入订单明细的meta字段
  • 订单详情页展示时,解析加购信息,清晰呈现所选附加选项及对应费用

6. 细节补充处理

  • 库存校验:若加购项关联实体产品(如加购线缆),添加购物车时需校验对应产品的库存,扣减逻辑与主商品一致
  • 依赖逻辑:若某些加购项需依赖其他选项(如选礼品包装才能加购贺卡),前端用JS控制选项禁用状态,后端做二次校验
  • 价格防护:始终用快照价格计算购物车和订单金额,避免后台修改加购价格后影响已生成的订单

内容的提问来源于stack exchange,提问作者Emma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:10:54