我在Symfony项目中一直存在使用doctrine持有小数的问题。
我有一个' Proyectos'变量中有价格的实体,所有变量都被发送到查询而没有问题,但价格(小数是十进制)在查询中显示为空,因为在我的sql表中价格不能为空,就会出现错误。
问题介于查询生成之间,因为在表单中," precio"以十进制形式发送。
我已经尝试将实体中的变量更改为数字类型,而不是成功。
实体:
/**
* @var decimal
*
* @ORM\Column(name="precio", type="decimal", precision=10, scale=2)
*/
private $precio;
在表格中" precio"是十进制(10,2)
控制器:
$formBuilder = $this->get('form.factory')->createBuilder(FormType::class, $project);
$formBuilder
->add('titulo', TextType::class)
->add('thumbdesc', TextType::class)
->add('descripcion', TextareaType::class)
->add('img', TextType::class)
->add('thumbimg', TextType::class)
->add('precio', NumberType::class, array('scale' => 2))
->add('crear', SubmitType::class);
$form = $formBuilder->getForm();
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($project);
$em->flush();
$request->getSession()->getFlashBag()->add('notice', 'Annonce bien enregistrée.');
return $this->redirectToRoute('sofimar_inversiones_view', array('id' => $project->getId()));
}
}
错误:SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'precio' cannot be null
教义和symfony变量类型之间肯定存在一些混淆,但我无法找到错误。
完整错误:
An exception occurred while executing
'INSERT INTO proyectos (titulo, descripcion, thumbdesc, thumbimg, img, precio, fecha)
VALUES (?, ?, ?, ?, ?, ?, ?)'
with params ["title", "description", "desc", "image", "img", null, "2017-06-25 16:39:48"]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'precio' cannot be null
发布参数:
[titulo => title,
thumbdesc => desc,
descripcion => description,
img => img, thumbimg => image,
precio => 12.36, crear => ,
_token => qNaO1AD3BpqSOuTW2vdQz5pX4A4Pk2S3QNv6ZEhZmzo]
答案 0 :(得分:0)
试试这个:
/**
* @var integer
*
* @ORM\Column(name="precio", type="decimal", precision=10, scale=2)
*/
private $precio;
在表单构建器
中->add('precio', NumberType::class, array('scale' => 2, 'required' => true))