Доктрина 2, десятичное число может содержать только 14 цифр - PullRequest
5 голосов
/ 12 апреля 2011

РЕДАКТИРОВАТЬ: Это было только что подтверждено как ошибка в 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)

Что не так, что я должен проверить дальше, как исправить, какие-либо подсказки?

1 Ответ

1 голос
/ 12 апреля 2011

Звучит так, как Doctrine2 возвращает значение с плавающей запятой и имеет точность с плавающей запятой , а mysql_query() возвращает значение в виде строки. Вы можете сделать var_dump() для каждой возвращаемой переменной и увидеть скалярный тип.

...