簡體   English   中英

使用 Laravel 添加到購物車時刪除手頭的物品

[英]Delete items on hand when added to cart with Laravel

我正在建立一個小型電子商務網站,並希望能夠在某人的購物車中添加或刪除商品時更新手頭的庫存。 在我的購物車 controller 中,我有四個功能:一個添加項目,一個增加項目,一個減少項目,一個刪除項目。 這是代碼:

     public function addItemToCart(Request $request, $id) {

    $prevCart = $request->session()->get('cart');
    $cart = new Cart($prevCart);

    $product = Product::find($id);
    $cart->addItem($id, $product);
    $request->session()->put('cart', $cart);

    return redirect()->route("home");

}

public function increaseSingleProduct(Request $request, $id) {

    $prevCart = $request->session()->get('cart');
    $cart = new Cart($prevCart);

    $product = Product::find($id);
    $cart->addItem($id, $product);
    $request->session()->put('cart', $cart);

    return redirect()->back();
}

public function decreaseSingleProduct(Request $request, $id) {

    $prevCart = $request->session()->get('cart');
    $cart = new Cart($prevCart);

    if( $cart->items[$id]['quantity'] > 1) {
        $product = Product::find($id);
        $cart->items[$id]['quantity'] = $cart->items[$id]['quantity']-1;
        $cart->items[$id]['totalSinglePrice'] = $cart->items[$id]['quantity'] * $product['price'];
        $cart->updatePriceAndQunatity();

        $request->session()->put('cart', $cart);
    }
    return redirect()->back();
}

public function deleteItemFromCart(Request $request, $id) {

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

    if(array_key_exists($id, $cart->items)){
        unset($cart->items[$id]);
    }
    $prevCart = $request->session()->get("cart");
    $updatedCart = new Cart($prevCart);
    $updatedCart->updatePriceAndQunatity();

    $request->session()->put("cart",$updatedCart);

    return redirect()->route('shopping cart'); 
}

這里的數量不是指手頭的數量,是指購物車中的數量。 在產品表中,我有一個名為 stock_quantity 的列。 理想情況下,這是我希望在執行每個 function 時更新的內容。

我可能沒有得到你問題的復雜性。 你不只需要找到產品並增加或減少嗎?

$product = Product::findOrFail($item_id);
$product->stock_quantity++; // or --
$product->save();

不過,當您添加到購物車時,我不會這樣做。 我會在結賬時這樣做,這樣您就不會將庫存留在廢棄的購物車中。 或者,如果您確實需要在有人在購物車中有東西時提交您的庫存,請實施 function 以刪除已放棄的已提交庫存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM