РЕДАКТИРОВАТЬ: это было только что подтверждено как ошибка в 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, и значение отображается следующим образом (с обычным геттером/сеттером):
/**
* @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;
}
Когда я устанавливаю это значение из своего кода, оно правильно записывается в базу данных. Но, и это моя проблема, когда я получаю значение (через геттер или \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 возвращает число с плавающей запятой:
["someValue":protected]=> float(234567890.01235)
Что не так, что мне проверить дальше, как исправить, какие-нибудь подсказки?