繁体   English   中英

Symfony2实体中除ID以外的其他字段上的关联未正确显示

[英]Association in Symfony2 entity on field other than id does not display correctly in form

在我的Symfony应用程序中的一个实体中,有一个关联不是基于id,而是基于序列号。 关联如下所示:

/**
 * @var Department
 *
 * @ORM\ManyToOne(targetEntity="Department")
 * @ORM\JoinColumn(name="department_serial", referencedColumnName="serial")
 */
protected $department;

当我为此实体创建表单时,我会像这样添加字段Department:

->add('department', null, array
(
  'label' => 'Choose department',
  'required' => true,
  //some more...
))

问题是,呈现表单时,我最终得到错误的html列表项值。 这些项目似乎获得了自动编号,因为这些值不是实际的部门ID。 它们也不对应于序列号,这是我的目标。 这是我得到的一个例子:

<select id="someId" name="form[someName]">
  <option value="0">Department A</option>
  <option value="1">Department B</option>
  <option value="2">Department C</option>
  <option value="3">Department D</option>
  <option value="4">Department E</option>
  <option value="5">Department F</option>
</select>

上面列出的项目的值应该是每个部门的序列号。 由于没有,实体与部门之间的联系似乎丢失了,无法保存我的表格。 (需要选择一个部门,并且序列号为[0、1、2、3、4、5]的部门不存在。)

因此,我的问题是:如何在表单类型中指示应将关联实体的哪个属性用作html列表中的值? 我知道有一个名为“属性”的选项可以更改每个列表项的标签,但是有没有办法更改其值?

我修好了它; 唯一的方法是通过将@ORM \\ Id添加到其定义中来使实体Department的序列属性成为ID。

实际的id是由其他两个属性组成的组合键,在任何地方都没有使用过,而是出于传统目的。 我现在使用@uniqueConstraint定义这些字段。

在这种情况下,这是可能的,但很明显,如果id也链接到其他位置,则显然无法使用此解决方案。

不知何故,Symfony2无法访问非id属性以用作与要为其构建表单的实体相关的实体的列表值。 对我来说似乎是个虫子...?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM