Округлые десятичные в форме редактирования Symfony2 + Doctrine2

Как мне установить десятичную точность и масштаб в сущности symfony2? Я определил широту в полях долготы, используя десятичный тип данных в моей сущности, например:

/**
 * @ORM\Column(type="decimal", precision="10", scale="6", nullable=true)
 */
protected $latitude;

При сохранении нового объекта он сохраняет десятичное значение правильно (я вижу 52.406374 в phpMyAdmin). Однако при отображении формы редактирования число округляется до52,406 и после обновления он сохраняется в mysql как 52.406000. Возможно, что-то не так с моей конфигурацией Doctrine, но я не знаю что.

Почему широта и долгота округляются?

Found a solution:

Компонент формы Symfony отображает поле десятичной формы как type = & quot; text & quot ;. Когда используешь:

->add('latitude', 'number', array(
    'precision' => 6,
))

Он отображается правильно. Нить из комментария не описывает мою проблему. Я предполагаю, что они уже исправили ошибку с & apos; convert to float & apos; точность. Когда я отображал широту в шаблоне ветки, он показывал правильное (не округленное) значение.

 jkucharovic11 июн. 2012 г., 13:27
Это не вызваноthis?

Ответы на вопрос(3)

Решение Вопроса

Посмотрите на эту справочную документацию дляNumberType.

Это то, что вы используете? Вы, вероятно, должны изменить точность.

 Wojciech Jasiński11 июн. 2012 г., 13:38
Вы правы - я уже опубликовал правку.
 11 июн. 2012 г., 13:42
Ой, извини... :/
 Wojciech Jasiński11 июн. 2012 г., 13:54
Вы были на 1 минуту быстрее

How to set the symfony decimal type precision and scale:

Установите его в вашей сущности, вот так:

protected $mycolumn;
/**
* @ORM\Column(type="decimal", precision=14, scale=8, nullable=true)
*/

Это устанавливает тип данных в базе данных MySQL:

mycolumn decimal(14,8)

Что означают масштаб и точность при указании типа десятичного поля в Doctrine 2?

$builder->add('lat', NumberType::class, array('scale' => 8));

This specifies how many decimals will be allowed until the field rounds the submitted value (via rounding_mode). For example, if scale is set to 2, a submitted value of 20.123 will be rounded to, for example, 20.12 (depending on your rounding_mode).

Ваш ответ на вопрос