在 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,否则为值。