我有两个单向多对一关系中的实体类和两个 fos rest 控制器,它们使用自己的表单类型(如here所述)负责创建、获取、更新和删除它们中的每一个。
在关系(主题)的“多”侧创建新实体时,我想将其与“一”侧(类别)的现有实体链接。Topic 的表单类型如下所示:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('category', 'entity', array('class' => 'MyNiceBundle:Category', 'property' => 'id'))
;
}
但它不接受我的表单请求
{"my_form":{"category":{"id":2, "aProperty":"bla"}}}
或者
{"my_form":{"category":{"id":2}}}
我得到的错误是 "category":{"errors":["This value is not valid."]}}
最后,我发现发送
{"my_form":{"category":2}}
实际工作。但这有点烦人,因为当我使用 GET 获取主题时,我得到
{"id":1, "category":{"id":2, "aProperty":"bla"}}
并不是
{"id":1, "category":2}
所以在使用 PUT 进行更新之前,我必须用它的 ID 覆盖类别属性......
我确信有更好的方法来做到这一点。有什么建议吗?