Php 使用Laravel添加到购物车时删除手头上的物品

Php 使用Laravel添加到购物车时删除手头上的物品,php,laravel,e-commerce,Php,Laravel,E Commerce,我正在建立一个小的电子商务网站出来,并希望能够有手头上的股票被更新时,项目被添加或删除从某人的购物车。在我的购物车控制器中,我有四个功能:一个用于添加项目,一个用于增加项目,一个用于减少项目,一个用于删除项目。以下是代码: public function addItemToCart(Request $request, $id) { $prevCart = $request->session()->get('cart'); $cart = new Cart(

我正在建立一个小的电子商务网站出来,并希望能够有手头上的股票被更新时,项目被添加或删除从某人的购物车。在我的购物车控制器中,我有四个功能:一个用于添加项目,一个用于增加项目,一个用于减少项目,一个用于删除项目。以下是代码:

     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'); 
}

这里的数量不是指现存量,而是指购物车中的数量。在products表中,我有一列称为stock_quantity。理想情况下,这是我希望在执行每个功能时得到更新的内容。

我可能不了解您问题的复杂性。你不需要找到乘积和增量或减量吗

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

我不会在你加入购物车的时候这样做。我会在结帐的时候做,这样你就不会把你的股票交给一辆废弃的购物车。或者,如果有人在购物车中有东西时,你真的需要提交库存,那么实现一个功能,在放弃时删除提交的库存。

你有什么问题?@Drewster如何在执行每个功能时更新库存数量。因此,如果有人向购物车中添加了1个项目,我希望数据库中的库存量得到更新。我在应该实现它的时候来回奔波。但我认为你是对的,增加客户退房的时间可能是最好的。我将在我的签出控制器中尝试此代码。我将此代码添加到签出控制器中,但出现错误。编辑上面的控制器代码以反映这一点是否有帮助?或者只是发布一个全新的问题?忽略这一点,我稍微调整了一下你的示例并使其生效。你做了什么使其生效?我将编辑答案,以便它是正确的,以防其他人需要它。@NateScott更正。