You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel控制器中乘法计算结果无法正确存入SQL数据库问题

问题分析与修复:Laravel购物车价格计算错误

你的代码存在两个核心问题,直接导致价格计算逻辑失效:


1. 条件判断误用赋值运算符

你写的 if($product-> discount_price=!null) 是赋值操作,而非比较判断:

  • 这段代码会把 !null(即布尔值true)强行赋值给 $product->discount_price,完全跳过了原本的判断逻辑
  • 同时属性名中间的空格(discount_price前的空格)会导致PHP解析异常

2. 变量名格式错误

$product-> discount_price 中的空格是非法的,正确的属性调用应该是 $product->discount_price(无空格)


修复后的完整代码

public function add_cart(Request $request, $id){
    if(Auth::id()){
        $user = Auth::user();
        // 商品不存在直接抛出404,避免后续报错
        $product = Product::findOrFail($id);
        $cart = new Cart;

        $cart->name = $user->name;
        $cart->email = $user->email;
        $cart->phone = $user->phone;
        $cart->address = $user->address;
        $cart->user_id = $user->id;
        $cart->product_id = $product->id;
        $cart->product_title = $product->title;
        $cart->quantity = $request->quantity;
        
        // 正确判断折扣价是否存在
        if(!is_null($product->discount_price)){
            $cart->price = $product->discount_price * $request->quantity;
        } else {
            $cart->price = $product->price * $request->quantity;
        }
        
        $cart->image = $product->image;

        $cart->save();
        return redirect()->back();
    } else {
        return redirect('login');
    }
}

额外优化建议

  • 模型类名规范:Laravel模型类名需首字母大写(如Product、Cart),符合PSR-4自动加载标准
  • 简化条件逻辑:可以用三元运算符压缩价格计算代码:
    $cart->price = (!is_null($product->discount_price) ? $product->discount_price : $product->price) * $request->quantity;
    
  • 请求参数验证:添加数量校验,防止非法值传入:
    $request->validate([
        'quantity' => 'required|integer|min:1'
    ]);
    

内容的提问来源于stack exchange,提问作者Mohammad Marxan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 03:07:48