top-think / think-orm

Think ORM——the PHP Database&ORM Framework
Apache License 2.0
413 stars 171 forks source link

ORM 对于 `bigint`+无符号 支持需要修正 #608

Closed NHZEX closed 1 month ago

NHZEX commented 1 month ago

当数据库中的值小于PHP_INT_MAX是整数,大于就会变成浮点、科学计数法、字符串,容易造成逻辑错误并且对强类型非常不友好。建议查询与读取都把类型默认设置为字符串。

有人提过 PR #533 但好像是放弃了。

可能相关:#505

NHZEX commented 1 month ago

@liu21st

看到测试结果普通 int 类型也变成字符串了

1) tests\orm\DbTest::testWhereIn
Failed asserting that two arrays are equal.
--- Expected
+++ Actual
@@ @@
 Array (
-    0 => 'SELECT * FROM `test_user` WHERE  `type` IN (1,3)'
-    1 => 'SELECT * FROM `test_user` WHERE  `type` = 1'
-    2 => 'SELECT * FROM `test_user` WHERE  `type` IN (1,0)'
+    0 => 'SELECT * FROM `test_user` WHERE  `type` IN ('1','3')'
+    1 => 'SELECT * FROM `test_user` WHERE  `type` = '1''
+    2 => 'SELECT * FROM `test_user` WHERE  `type` IN ('1','')'
     3 => 'SELECT * FROM `test_user` WHERE  0 = 1'
-    4 => 'SELECT * FROM `test_user` WHERE  `type` NOT IN (1,3)'
+    4 => 'SELECT * FROM `test_user` WHERE  `type` NOT IN ('1','3')'
     5 => 'SELECT * FROM `test_user` WHERE  1 = 1'
 )