在 Laravel 中product_id从购物车会话中删除产品



如何按product_id从购物车会话中删除产品? 我已经使用 Ajax 将产品 ID 发送到控制器。这些是我的代码,这是我的购物车会话的结构

会话的 JSON 结构:

[{"product_id":"2","quantity":5,"userId":"1","product_name":"u062fu0645u067eu0627u06ccu06cc u0627u0628u0631u06cc ","product_root":"files\courses\course2","product_description":"u062fu0645u067eu0627u06ccu06cc u0627u0628u0631u06cc ","product_price":5000},{"product_id":"1","quantity":1,"userId":"1","product_name":"u062au0645u0628u0648u0646 u06ccu0632u062fu06ccu0645 u0645u0627u0644 u062au0648 ","product_root":"files\courses\course1","product_description":"asdasdasdasdsadsadsadas","product_price":1000}]

控制器功能:

public function deleteCardItem(Request $request)
{
$product_id = $request-> id;
$cards = session()->get('cards');
$ids = array_column($cards, 'product_id');
$index = array_search($product_id, $ids);
unset($cards[$index]);
}

阿贾克斯 :

$.ajax({
type: 'post',
url: '{{route('deleteCard')}}',
data: {
'id':Product_id,
'userId':'{{auth()->user()->id}}',
"_token": '{{ csrf_token() }}',
},
cache: false,
success: function(res){
}
});

您可以使用array_filter查找并删除已删除的项目:

public function deleteCardItem(Request $request)
{
$product_id = $request-> id;
$cards = session()->get('cards');
$newCards = array_filter($cards, function($product){
return $product['product_id'] != $product_id;
});
session($newCards);
}

最新更新