【发布时间】:2011-01-31 09:40:46
【问题描述】:
玩家:
- 64 位 linux 与
- php 5 (ZendFramework 1.10.2)
- PostgreSQL 8.3
- 教义 1.2
通过 Flash/Flex 客户端,我得到一个 8 字节的整数值。
数据库中的字段是 BIGINT(8 字节)
PHP_INT_SIZE 表明系统支持 8 字节整数。
按原样和 intval() 打印出代码中的值会导致:
Plain: 1269452776100
intval: 1269452776099
浮点舍入失败?
但真正让我抓狂的是
错误:整数的输入语法无效:“1269452776099.000000”'
当我尝试在查询中使用它时。喜欢:
Doctrine_Core::getTable('table')->findBy('external_id',$external_id);
或
Doctrine_Core::getTable('table')->findBy('external_id',intval($external_id));
我应该如何处理这个?或者我怎样才能给教义一个浮点数,它应该在 bigint 字段上使用?
非常感谢任何帮助!
TIA
编辑:
来自模型:
$this->hasColumn('external_id', 'integer', 8, array(
'type' => 'integer',
'length' => 8,
'fixed' => false,
'unsigned' => false,
'notnull' => false,
'primary' => false,
));
数据库字段为 bigint 8 字节。
编辑2: http://bugs.php.net/bug.php?id=48924 似乎是问题的根源
【问题讨论】:
-
您是从数据库、从 yaml 模式构建 rou 模型,还是手动创建它?听起来您对列的模型定义与其实际类型之间存在差异。
-
yaml 是从 DB 构建的,模型是从 yaml 构建的。模型定义和数据库是正确的。
-
PostgreSQL 7.3?你确定吗?把它送到博物馆,那是它所属的地方。没有支持,没有更新,没有安全性。还是您的意思是 8.3 版?
标签: php postgresql floating-point doctrine integer