编辑:这刚刚被确认为 Doctrine 2 中的错误 http://www.doctrine-project.org/jira/browse/DDC-1112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15724#action_15724
我有一个 Doctrine 2 实体,值是这样映射的(使用常规的 getter/setter):
/**
* @Column(type="decimal", precision=40, scale=30)
*/
protected $someValue;
/**
* @return decimal
*/
public function getSomeValue()
{
return $this->someValue;
}
/**
* @param decimal $someValue
*/
public function setSomeValue($someValue)
{
$this->someValue = $someValue;
}
当我从代码中设置该值时,该值会正确写入数据库。但是,这就是我的问题,当我得到值时(通过 getter 或 \Doctrine\Common\Util\Debug::dump()
),它总是给我一个最多 14 位的数字,并将值四舍五入。我用默认的findById()
读取记录。
eg: with value 1234567890.012345678901234567890123456789 I have 1234567890.0123
eg: with value 890.0123456789012345678901234567890123456 I have 890.01234567890
我当然想要所有数字,而不仅仅是14。MySQL中的字段是这样声明的:
someValue decimal(40,30) NOT NULL,
当我使用原始 PHP 和 mysql_query() 获取值时,它会正确返回。
编辑:似乎问题在于 Doctrine 返回一个 float :
["someValue":protected]=> float(234567890.01235)
出了什么问题,接下来我应该检查什么,如何修复,有什么线索吗?
最佳答案
听起来 Doctrine2 正在返回浮点值并遇到 floating point precision而 mysql_query()
将值作为字符串返回。您可以对每个返回的变量执行 var_dump()
并查看标量类型。
关于php - 学说2,十进制只能包含14位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5635500/