РЕДАКТИРОВАТЬ: Это было только что подтверждено как ошибка в Doctrine 2 http://www.doctrine -project.org / jira / browse / DDC-1112? Page = com.atlassian.jira.plugin.system.issuetabpanels: comment-tabpanel & focusCommentId = 15724 # action_15724
У меня есть сущность Doctrine 2, и значение отображается следующим образом (с обычным получателем / установщиком):
/**
* @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 (), оно возвращается корректно.
Edit : похоже, проблема в том, что Doctrine возвращает значение с плавающей точкой:
["someValue":protected]=> float(234567890.01235)
Что не так, что я должен проверить дальше, как исправить, какие-либо подсказки?