【问题标题】:Laravel - How to update array value in laravel session?Laravel - 如何在 laravel 会话中更新数组值?
【发布时间】:2017-06-10 14:06:50
【问题描述】:

我正在 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 文档,但没有找到任何方法来解决我的问题。

【问题讨论】:

    标签: php arrays session laravel-5 laravel-5.3


    【解决方案1】:

    没有直接的方法可以做到这一点,您可以创建一个简单的函数来为您更新会话..

    这是一个例子。

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

    【讨论】:

    • 你的答案是对的。但我有一个问题是如何将brand_id 传递给控制器​​功能?因为在购物车页面上我通过 foreach 循环得到了所有信息,所以我如何确定哪个brand_id 数量发生了变化?
    • 这个函数可以在你的控制器上是私有的。然后从 public function add_cart(Request $request) 函数调用它。定义$product 的数组后,请执行以下操作:$this->updateQuantityByBrand($product["brand_id"], $product["quantity"]);
    猜你喜欢
    • 2020-06-06
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多