我正在使用 Crinsane 的 laravel carthttps://github.com/Crinsane/LaravelShoppingcart
我想更新选项购物车,里面有很多选项,但我只想更改一个选项,我做不到
这是我的代码
Cart::add([
'id' => 1,
'name' => 'Keyboard',
'qty' => 30,
'price' => 399,
'options' => [
'item_code' => 'KEY01',
'dimension' => '30cm x 60cm', ...etc]
]);
然后我想更改选项
这是我的代码
Cart::update(
$rowId, [
'qty' => 60,
'price' => 299,
'options' => [
'item_code' => 'KEY02']
]);
然后结果选项只item_code,其他选项消失我希望其他选项仍然存在,如何处理?
对不起,英语不好
感谢您的回答
请尝试以下代码。
$item = Cart::get($rowId);
$option = $item->option->merge(['item_code' => 'KEY02']);
Cart::update(
$rowId, [
'qty' => 60,
'price' => 299,
'options' => $option
]);
这是更好的方法。 和良好的解决方案:
public function updateCart(Request $request){
$rid = $request->row_id;
$qty = $request->qty;
for($i = 0; $i< count($rid); $i++){
$cart = Cart::get($rid[$i]);
if ($cart->qty != $qty[$i]) {
Cart::update(
$rid[$i], [
'qty' => $qty[$i],
'options' => [
'image' => $cart->options->image,
'description' => $cart->options->description,
'unit_type' => $cart->options->unit_type,
'color' => $cart->options->color,
'print' => $cart->options->print,
'design' => $cart->options->design,
'discount_info' => $cart->options->discount_info,
'discount_amount' => $discountAmount * $qty[$i],
]
]);
}
}
return redirect()->back()->with('success', 'Cart update successfully');
}