laravel SQLSTATE [22007]:无效的日期时间格式:1366不正确的十进制值:'buy_amt * 0.00097812555575316'为行1上的价格列错误

时间:2018-08-20 01:35:55

标签: php laravel

我正在尝试更新整个数据,但是我需要将汇率除以购买价格上的保证金率,然后出现数据格式错误。

  

SQLSTATE [22007]:无效的日期时间格式:1366不正确的十进制值:第1行的“产品”列的“ buy_amt * 0.00097812555575316”   (SQL:更新产品设置值= 10,价格= buy_amt *   0.00097812555575316)

我的代码:

VpnEntry.Options.RequireEncryptedPassword = false;
VpnEntry.Options.RequirePap = true;
VpnEntry.Options.RequireChap = false;
VpnEntry.Options.RequireMSChap = false;
VpnEntry.Options.RequireMSChap2 = false;

产品表

DB::update("update prod set value = ?, price = ?, ", [ $datas["value"], "buy_amt * ".(1+($datas["value"]/100))/$datas["price"], ]);

price value datatype DECIMAL 
buy_amt datatype INT

2 个答案:

答案 0 :(得分:1)

这段代码

"buy_amt * ".(1+($datas["value"]/100))/$datas["price"]

将生成一个字符串,该字符串将不适合数据库中的价格字段,即数字

你的意思是

$buy_amt * (1+($datas["value"]/100))/$datas["price"] 

答案 1 :(得分:0)

我解决了这个问题...

    DB::table("prod")
        ->update([
            "value" => $datas["value"],
            "price" => DB::raw("buy_amt * ".(1+($datas["value"]/100))/$datas["price"]),
        ]),

需要使用DB :: raw来进行查询计算。