在 Laravel updateOrCreate 执行加法操作
Perform addition operation in Laravel updateOrCreate
我正在从事一个电子商务项目,我在购物车系统中遇到了问题。因此,用户可以按价格将产品添加到购物车,如果用户再次添加相同的产品,价格(在购物车中)应该累加。例如,我以 20 美元的价格将一个苹果添加到购物车,然后以 10 美元的价格再次添加它,现在价格应该是 30 美元。
我试过这样做
$cart = Cart::updateOrCreate(
['order_id' => $order->id, 'product_id' => $request->product_id],
['price' => DB::raw("price + $request->price")]
);
从现有购物车模型更新价格工作正常,但如果创建新购物车模型,数据库中的价格始终为空。你们有解决这个问题的建议吗?谢谢
您可以在原始查询中使用 IFNULL()
$cart = Cart::updateOrCreate(
['order_id' => $order->id, 'product_id' => $request->product_id],
['price' => DB::raw("IFNULL(price, 0) + $request->price")]
);
如果字段为 NULL,IFNULL(field, 0)
将 return 0,否则为值。
我正在从事一个电子商务项目,我在购物车系统中遇到了问题。因此,用户可以按价格将产品添加到购物车,如果用户再次添加相同的产品,价格(在购物车中)应该累加。例如,我以 20 美元的价格将一个苹果添加到购物车,然后以 10 美元的价格再次添加它,现在价格应该是 30 美元。
我试过这样做
$cart = Cart::updateOrCreate(
['order_id' => $order->id, 'product_id' => $request->product_id],
['price' => DB::raw("price + $request->price")]
);
从现有购物车模型更新价格工作正常,但如果创建新购物车模型,数据库中的价格始终为空。你们有解决这个问题的建议吗?谢谢
您可以在原始查询中使用 IFNULL()
$cart = Cart::updateOrCreate(
['order_id' => $order->id, 'product_id' => $request->product_id],
['price' => DB::raw("IFNULL(price, 0) + $request->price")]
);
如果字段为 NULL,IFNULL(field, 0)
将 return 0,否则为值。