当前位置: 首页 > 知识库问答 >
问题:

laravel session购物车-如果产品已经存在,如何增加数量

南门野
2023-03-14

我正在与laravel进行一个网上购物项目,但这里有一个问题,我想如果用户将产品添加到购物车中,并且已经有相同的产品将被添加数量,

但在我的项目中:如果用户向购物车添加了一个产品,并且已经有了相同的产品,那么它将向会话添加一个新的价值项目

阵列:

array:3 [▼
  0 => array:5 [▼
    "id" => 7
    "nama_product" => "adssdsadxx"
    "harga" => 13
    "pict" => "s.gif"
    "qty" => 1
  ]
  1 => array:5 [▼
    "id" => 7
    "nama_product" => "adssdsadxx"
    "harga" => 13
    "pict" => "s.gif"
    "qty" => 1
  ]
  2 => array:5 [▼
    "id" => 7
    "nama_product" => "adssdsadxx"
    "harga" => 13
    "pict" => "s.gif"
    "qty" => 1
  ]
]

阵列:

array:1 [▼
  0 => array:5 [▼
    "id" => 7
    "nama_product" => "adssdsadxx"
    "harga" => 39
    "pict" => "s.gif"
    "qty" => "3"
  ]
]

这是我的ProductsController.php:

   public function Cart()
    {
        return view('shop.cart');
    }

    public function addToCart(Request $request, $id)
    {
        $product = DB::select('select * from products where id='.$id);
        $cart = Session::get('cart');
        $cart[] = array(
            "id" => $product[0]->id,
            "nama_product" => $product[0]->nama_product,
            "harga" => $product[0]->harga,
            "pict" => $product[0]->pict,
            "qty" => 1,
        );

        Session::put('cart', $cart);
        Session::flash('success','barang berhasil ditambah ke keranjang!');
        //dd(Session::get('cart'));
        return redirect()->back();
    }

    public function updateCart(Request $cartdata)
    {
        $cart = Session::get('cart');

        $cartQty = 1;

        foreach ($cartdata->all() as $id => $val) 
        {
            if ($cartQty != 1) {
                $cart[$id]['qty'] = $val;
                if ($val < 1) {
                    unset($cart[$id]);
                }
            }
            $cartQty++;
        }
        Session::put('cart', $cart);
        return redirect()->back();
    }

    public function deleteCart($id)
    {
        $cart = Session::get('cart');
        unset($cart[$id]);
        Session::put('cart', $cart);
        return redirect()->back();
    }

非常感谢你。。。

共有2个答案

谷梁宏恺
2023-03-14

您需要更改代码

public function addToCart(Request $request, $id)
{
    $product = DB::select('select * from products where id='.$id);
    $cart = Session::get('cart');
    $cart[$product[0]->id] = array(
        "id" => $product[0]->id,
        "nama_product" => $product[0]->nama_product,
        "harga" => $product[0]->harga,
        "pict" => $product[0]->pict,
        "qty" => 1,
    );

    Session::put('cart', $cart);
    Session::flash('success','barang berhasil ditambah ke keranjang!');
    //dd(Session::get('cart'));
    return redirect()->back();
}

public function updateCart(Request $cartdata)
{
    $cart = Session::get('cart');

    foreach ($cartdata->all() as $id => $val) 
    {
        if ($val > 0) {
            $cart[$id]['qty'] += $val;
        } else {
            unset($cart[$id]);
        }
    }
    Session::put('cart', $cart);
    return redirect()->back();
}

只需按产品ID键创建购物车数组。

权胜泫
2023-03-14

如果产品已经存在,则更新产品数量,否则将新产品添加到购物车中。

注意:确保app/Http/Kernel.php应该像这样将Start会话放入protected$middleware中。

 /**
     * Add product to the cart
     *
     * @return success message
     */
    public function addToCart(Request $request){
        $product = $request->all();

        $cart = Session::get('cart');

        /*
         * If product already exist into the cart then update QTY of product
         * Othewise add new product into the cart
         */
        if(isset($cart[$product['id']])):
            $cart[$product['id']]['qty'] += 1;
        else:
            $cart[$product['id']] = $product;
            $cart[$product['id']]['qty'] = 1; // Dynamically add initial qty
        endif;

        Session::put('cart', $cart);

        return Response::json(['success' => true, 'cart_items' => count(Session::get('cart')), 'message' => 'Cart updated.']);
    }
 类似资料:
  • 我面临的问题是,我不知道如何更新购物车活动中已经存在的产品数量。我正在尝试从firebase中检索数据,但无法执行此操作。 这是我的代码: 我已经分享了代码片段,其中“其他”语句运行正常,而“如果”语句运行失败。希望有人能帮助我。我真的很感激!

  • 我试图将Woocommerce中的Add to Cart按钮的功能设置为只允许将特定产品添加到Cart中一次。 一旦第一次将特定产品添加到cart中,就需要隐藏添加到cart中的内容。 在推车我可以有任何数量的产品-只是一个最大的数量为每一个产品1。 如何允许将特定产品添加到购物车中一次?

  • 我是新来的。我想将产品添加到购物车并列出购物车的所有产品。我已经将Co-Cart插件添加到我的服务器,并且我正在使用Co-Cart API实现购物车相关功能。 我面临的问题是,我不能在我的反应本地应用程序中查看购物车产品。以下是我现在使用的API: 1.将产品添加到购物车: 方法:邮寄 URL:https://www.myhost.com/wp-json/wc/v2/cart/add?token=

  • 我经营一家Woocommerce商店,该商店也提供免费产品(_常规价格=0)。客户必须选择数量并将其添加到购物车中,然后下订单才能收到产品。但这并不是Woocommerce的工作原理,它隐藏了所有价格为0的产品的“添加到购物车”链接。并且不会在购物车页面中显示它们。有没有解决这个问题的办法?非常感谢。

  • 问题内容: 我有上面的代码。 如果我在cart_item上运行print_r,我将得到一个多维数组: 我如何只获得product_id? 我试过$ test = 没用 问题答案: 要获取 foreach循环中的每个购物车商品(对于简单产品): 如果是可变产品,请获取 : 或在两种情况下 ( Woocommerce 3+中 的 Object在哪里) : 更新: 循环外使用产品ID 1)打破循环 (仅