我正在尝试创建一个简单的表单来添加公司,而且我在使用实体时遇到了麻烦。
我使用公司类型实体添加了一个选择字段:
->add('idtypesociete', 'entity', array('class' => 'PromocastUtilisateurBundle:PcastTypesociete', 'property' => 'nomtypesociete'))
但是当我提交表单时,我的idtypesociete字段包含一个'PcastTypesociete'对象,而不仅仅是所选选项的值。因此提交失败。
我在我的公司实体和我的typeCompany实体之间建立了多对一关系,如下所示:
/**
* @var integer $idtypesociete
*
* @ORM\Column(name="IDTYPESOCIETE", type="integer", nullable=false)
* @ORM\ManyToOne(targetEntity="Promocast\UtilisateurBundle\Entity\PcastTypesociete")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="PcastTypesociete_idtypesociete", referencedColumnName="idtypesociete")
* })
*/
private $idtypesociete;
您是否有解决方案只能选择公司类型的ID? (如果可能的话,没有简单的sql请求来列出我的公司类型)
非常感谢!
答案 0 :(得分:1)
如果关系正常,那么Symfony 2通常可以很好地为您构建表单字段。
我认为问题是$ idtypesociete属性。您是否希望在水合实体上存储整数?
Doctrine association使用实体关系。您提供的注释确定了连接列之类的幕后内容: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-one-unidirectional
我建议在做其他事情之前备份或承诺你的工作。
是否将实体属性更改为以下帮助?
/**
* @var PcastTypesociete $typesociete
*
* @ORM\Column(name="IDTYPESOCIETE", type="integer", nullable=false)
* @ORM\ManyToOne(targetEntity="Promocast\UtilisateurBundle\Entity\PcastTypesociete")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="PcastTypesociete_idtypesociete", referencedColumnName="idtypesociete")
* })
*/
private $typesociete;
如果第一次无法正常工作,您可能需要通过doctrine:schema:update使用控制台更新数据库架构。您的实体也需要更新以反映新的属性名称。
如果可以,那么您的表单只需要表单类型中的->add('typesociete')
,并且您将拥有一个正常运行的实体选择字段,因为Symfony足够聪明,可以知道要使用的字段类型。