如何使用Symfony2保存十进制数

如何使用Symfony2保存十进制数,symfony,Symfony,我正在做一个Symfony2.3项目,我需要一个输入编号,它可以让我用小数保存值并对箭头进行采样。使用下面的代码,我可以显示小数,但只保存整个部分 实体 /** * * @ORM\Column(name="horas", type="decimal", scale=1) * @Assert\NotBlank() */ private $hours; FormType ->add('hours','integer', array('required' => true,'at

我正在做一个Symfony2.3项目,我需要一个
输入编号
,它可以让我用小数保存值并对箭头进行采样。使用下面的代码,我可以显示小数,但只保存整个部分

实体

/**
 *
 * @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)))

非常感谢您的帮助。

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

/**
 * @ORM\Column(type="decimal", precision=3, scale=1)
 * @Assert\Range(min=15, max=40)
 */
private $hours;
十进制
字段中,
精度
始终是总位数,而
比例
表示小数部分的长度。在上面的示例中,十进制字段可以存储0到99之间的值,而将存储点后的一位数字

请注意,条令将字段表示为字符串,因此如果检索实体,字段的值将为
“20.5”
(即字符串)。必须再次手动将该值转换为浮点值。这可以在字段的getter中完成:

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

顺便说一下,Symfony 2.3不再维护。2.8是最新的LTS版本。我知道谢谢,但是我用这个版本开始了最后一个项目,我更喜欢在我修改这个版本之前完成它。Hello@lxg,谢谢你的回复。我需要保存数据表单20.5,其中一个人工作的总小时数,例如,这种情况下是20个半小时。在这种情况下他该怎么办?好的,我明白了。我已经相应地修改了我的答案。你已经修改了你告诉我的内容,但仍然保存了没有正确小数部分的值。对于20.5存储,保留20.0。可能是我指出的formtype吗?抱歉@lxg,我使用FormData从ajax发送数据,因为我还必须保存一个图像文件,看到它保存得不好,我将该值添加到FormData中,并在php中与setHours()一起使用,最后保持良好。我不知道问题会出在哪里,但无论如何,感谢您在上面的澄清。