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

Laravel购物车重复添加相同product_id无法新增其余产品问题求助

问题排查及修复方案

1. 前端模板(addtocart.blade.php)问题

你在循环输出产品ID的隐藏域时,所有输入框使用了相同的name属性product_id,后面输出的input值会覆盖前面的值,最终表单提交时只会传递最后一个产品的ID(也就是你遇到的13),这是ID11、12无法添加的核心原因。
如果你的需求是点击一次按钮就把所有产品批量加入购物车,需要把name改成数组格式:

<form action="{{route('cart.store')}}" method="post">
@csrf
@foreach($products as $product)
    <input type="hidden" name="product_ids[]" value="{{$product->id}}">
@endforeach
  <button type="submit" class="btn btn-light">Add to cart</button>
</form>

如果你的需求是每个产品对应单独的加入购物车按钮,就需要把表单放在循环内部,每个产品对应一个表单:

@foreach($products as $product)
<form action="{{route('cart.store')}}" method="post">
@csrf
    <input type="hidden" name="product_id" value="{{$product->id}}">
  <button type="submit" class="btn btn-light">Add {{$product->name}} to cart</button>
</form>
@endforeach

2. 控制器(CartController)逻辑问题

你现有的控制器逻辑存在多处错误:

  • 每次直接实例化新的Cart对象,没有先查询当前用户是否已经添加过该商品,判断重复的逻辑完全不生效
  • 错误调用increment方法修改product_id字段,正确应该是递增商品数量字段(一般命名为quantity或者num)
  • 没有处理批量传入的产品ID逻辑
    以下是修复后的控制器代码,适配批量添加所有产品的场景:
public function store(Request $request)
{
    if (!Auth::check()) {
        // 未登录跳转或提示,可按需补充逻辑
        session()->flash('error', '请先登录');
        return back();
    }
    // 获取提交的所有产品ID
    $productIds = $request->input('product_ids', []);
    foreach ($productIds as $productId) {
        // 先查询当前用户购物车中是否已经存在该商品
        $cart = Cart::where('user_id', Auth::id())
            ->where('product_id', $productId)
            ->first();
        if ($cart) {
            // 已存在则数量+1,注意这里修改的是数量字段,按你实际表字段名调整
            $cart->increment('quantity');
        } else {
            // 不存在则新建记录
            Cart::create([
                'user_id' => Auth::id(),
                'product_id' => $productId,
                'quantity' => 1 // 初始数量为1
            ]);
        }
    }
    session()->flash('success', '商品已添加到购物车!');
    return back();
}

注意:请确保你的carts表存在quantity(数量)字段,如果字段名不同请自行替换代码中的对应字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 17:51:03