如何使用Symfony2保存十进制数

时间:2017-02-11 11:38:14

标签: symfony

我正在开发一个Symfony2.3项目,我需要一个input number,它允许我用小数值保存值并对箭头进行采样。使用以下代码,我可以显示小数,但只保存整个部分。

实体

/**
 *
 * @ORM\Column(name="horas", type="decimal", scale=1)
 * @Assert\NotBlank()
 */
private $hours;

FormType

 ->add('hours','integer', array('required' => true,'attr' => array('min' => 15,'max' => 40,'step' => 0.5)))

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

要在十进制字段中存储浮点值,您必须首先确定该点之前需要多少位数,以及之后的位数。例如,您的字段可能如下所示:

/**
 * @ORM\Column(type="decimal", precision=3, scale=1)
 * @Assert\Range(min=15, max=40)
 */
private $hours;

decimal字段中,precision始终是总位数,而scale表示小数部分的长度。在上面的示例中,十进制字段可以存储0到99之间的值,而点之后的一个数字将被存储。

请注意,Doctrine会将字段表示为字符串,因此如果您检索实体,则字段的值将为"20.5"(即字符串)。您必须再次手动将值转换为浮点值。这可以在现场的getter中完成:

public function getHours()
{
    return (float) $this->hours;
}