Laravel - 将 INT 保存到数据库变为负值
Laravel - Saving INT to database turns negative
我正在将一些数据保存到我的数据库中,但是有一个字段在我保存数据时变为负值。
["invoice_id"]=> int(20210126075173)
这取自 var_dump()
,是我要保存的号码。这看起来很正常,但是当我查看数据库时,我得到了数字
-1990019803
问题是,当我 运行 我机器上的代码时,它按预期工作并保存了数字,但是当我在实际服务器上执行此操作时 returns负数。我的本地数据库也是实时数据库的克隆。
"Invoice_id" 是一个 varchar 字段 我尝试将其更改为 INT 或 BIGINT 但这没有区别。
为什么要将 invoice_id
从 var_char 字段更改为 int 字段?我觉得如果是varchar的话,可以加""
存入数据库。
你可以做几件事来防止这种情况发生:
使用 $table->unsignedInteger('column name');
使数据库列成为 UNSIGNED INTEGER
在使用 if 语句 ( (int) ["invoice_id"] >= 0 ) ?? ["invoice_id"] * -1
插入数据库之前检查值
您的本地和远程服务器之间的差异问题可能与数据库服务器(mysql,postgrs,...) 版本或系统有关 locale.I 以前没有见过这个问题并且有不知道是什么原因造成的。
确保在将数据插入数据库之前验证数据以防止出现不需要的值(这会将您带到第二个选项)
你为什么要将 ["invoice_id"]=> int(20210126075173)
转换为一个整数,而你似乎已经给它一个整数了?
你可以试试:
["invoice_id"]=> 20210126075173
或者如果您要将字符串转换为 int:
["invoice_id"]=> int() '20210126075173'
我正在将一些数据保存到我的数据库中,但是有一个字段在我保存数据时变为负值。
["invoice_id"]=> int(20210126075173)
这取自 var_dump()
,是我要保存的号码。这看起来很正常,但是当我查看数据库时,我得到了数字
-1990019803
问题是,当我 运行 我机器上的代码时,它按预期工作并保存了数字,但是当我在实际服务器上执行此操作时 returns负数。我的本地数据库也是实时数据库的克隆。
"Invoice_id" 是一个 varchar 字段 我尝试将其更改为 INT 或 BIGINT 但这没有区别。
为什么要将 invoice_id
从 var_char 字段更改为 int 字段?我觉得如果是varchar的话,可以加""
存入数据库。
你可以做几件事来防止这种情况发生:
使用
使数据库列成为 UNSIGNED INTEGER$table->unsignedInteger('column name');
在使用 if 语句
插入数据库之前检查值( (int) ["invoice_id"] >= 0 ) ?? ["invoice_id"] * -1
您的本地和远程服务器之间的差异问题可能与数据库服务器(mysql,postgrs,...) 版本或系统有关 locale.I 以前没有见过这个问题并且有不知道是什么原因造成的。
确保在将数据插入数据库之前验证数据以防止出现不需要的值(这会将您带到第二个选项)
你为什么要将 ["invoice_id"]=> int(20210126075173)
转换为一个整数,而你似乎已经给它一个整数了?
你可以试试:
["invoice_id"]=> 20210126075173
或者如果您要将字符串转换为 int:
["invoice_id"]=> int() '20210126075173'