在我的 Symfony 应用程序的实体中,有一个关联不是基于 id,而是基于序列号。该关联如下所示:
/**
* @var Department
*
* @ORM\ManyToOne(targetEntity="Department")
* @ORM\JoinColumn(name="department_serial", referencedColumnName="serial")
*/
protected $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 列表中的值?我知道有一个名为“property”的选项可以更改每个列表项的标签,但是有没有办法更改它的值?