簡體   English   中英

Laravel-如何在Laravel會話中更新數組值?

[英]Laravel - How to update array value in laravel session?

我在laravel 5.3中創建購物車功能。 當用戶將產品添加到購物車時,基本上是創建會話並將產品添加到該會話。

讓我們從我正在工作的示例開始。

當用戶將產品添加到購物車時,我正在將必需的參數傳遞給控制器​​功能,然后將其存儲在會話中。 所以我的控制器功能是:

public function add_cart(Request $request){


    $product = [
        'sku' => $request['sku'],
        'price' => $request['price'],
        'quantity' => $request['quantity'],
        'brand_id' => $request['brand_id'],
        'brand_name' => $request['brand_name'],
        'brand_img' => $request['brand_img']
    ];

   // dd($product);
    if($request->session()->has('add_to_cart')){
        $request->session()->push('add_to_cart', $product);
    }else{
        $request->session()->push('add_to_cart', $product);
    }


    return count($request->session()->get('add_to_cart'));

}

因此,在將產品添加到add_to_cart會話后,我的會話如下所示:

array:2 [▼
0 => array:6 [▼
"sku" => ""
"price" => " "
"quantity" => "1"
"brand_id" => "14"
"brand_name" => "The Body Shop"
"brand_img" => "http://s3.giftcardsindia.in/2015/06/01/original-556c623c560f5.jpg"
 ]
1 => array:6 [▼
"sku" => "ffs002000"
"price" => "2000"
"quantity" => "1"
"brand_id" => "47"
"brand_name" => "The Four Fountains Spa"
"brand_img" => "http://s3.giftcardsindia.in/2015/06/01/original-556c47b5a27eb.jpg"
]
]

使用此功能,我可以在購物車頁面中顯示所有購物車產品,並使用小計,稅金和付款總計功能來完成。

現在的問題是,如果我想更新brand_id:14的數量,如何從brand_id為14的會話中獲取產品數組? 獲取該產品數組后,如何僅更新該數組中的數量值? 還是我們可以用新產品替換整個產品陣列,但是如何從會話中找到該產品陣列?

沒什么主意 我搜索laravel文檔,但沒有任何方法來解決我的問題。

沒有直接的方法,您可以創建一個簡單的函數來為您更新會話。

這是一個例子。

public function updateQuantityByBrand($brand_id, $quantity){
   $cartItems = session()->get('add_to_cart');

   foreach($cartItems as $item){
      if($item["brand_id"] == $brand_id){
          $item["quantity"] = $quantity;
      }
   }

   return session("add_to_cart", $cartItems);
}

暫無
暫無

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

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