【发布时间】:2014-02-14 08:00:28
【问题描述】:
我对 symfony 2 有这个问题:
“通过关系‘Acme\AcmeBundle\Entity\MainEntity#person’找到了一个新实体,该实体未配置为对实体进行级联持久操作:JOHN DOE CORP。要解决此问题:要么显式调用 EntityManager#persist( ) 在此未知实体上或配置级联在映射中保留此关联,例如 @ManyToOne(..,cascade={"persist"})。"
MainEntity 是一个普通实体,带有一个“person”字段,它是与 People 实体的多对一关系。 People 实体是一个只读实体,但我不知道为什么要创建一个新的 Person。
当我通过表单更新 MainEntity 时会发生这种情况。表单的定义是:
$builder
->add('code')
->add('type')
->add('person', new PeopleType())
->add('Save', 'submit');
而 PeopleType 是:
$builder
->add('name', 'text', array('read_only' => true))
->add('idNumber', 'text', array('read_only' => true))
->add('address', new AddressType());
如您所见,无法更改 Person 字段,所以我不明白这里发生了什么...有什么线索吗?
【问题讨论】:
-
您的实体中有一个关系,您需要在其上添加
cascade={"persist"}...您可以显示您的实体的代码吗? -
我无法添加 cascade={"persist"},因为 People 表必须是只读表,因此无法创建新人。无论如何,AFAIK 我还没有创建任何新人......
标签: symfony