Doctrine 2, decimal может содержать только 14 цифр

EDIT: Это было просто подтверждено как ошибка в 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 возвращает значение float и работает с точностью с плавающей точкой, а mysql_query() возвращает значение в виде строки. Вы можете сделать var_dump() для каждой возвращаемой переменной и увидеть скалярный тип.