【发布时间】:2018-02-12 10:59:05
【问题描述】:
我有一个旧的 Page 实体和一个新的 Equivalent 实体。我的 Page.orm.xml 现在已被编辑为包含以下内容:
<one-to-many target-entity="AppBundle\Entity\Equivalent" field="equivalents">
<cascade>
<cascade-all/>
</cascade>
</one-to-many>
...并且我的 PageAdmin 类已被编辑为包含以下内容:
->add('equivalents', 'sonata_type_collection', array(
'label' => "Equivalents",
'cascade_validation' => true,
'required' => false,
), array(
'edit' => 'inline',
'inline' => 'table',
'targetEntity' => 'AppBundle\Entity\Equivalent',
))
...我的等效实体定义包括以下内容:
/**
* @var \Application\Sonata\PageBundle\Entity\Page
* @ORM\ManyToOne(targetEntity="Application\Sonata\PageBundle\Entity\Page", cascade={"persist"})
*/
private $page;
到目前为止一切顺利。当我编辑一个页面时,我得到一个流畅的界面,允许我在内联表单中添加和编辑新的等效记录。非常好。
当我尝试保存 Page 实体时,我的问题出现了。我收到以下错误:
通过关系发现了一个新实体 'Application\Sonata\PageBundle\Entity\Page#equivalents' 不是 配置为实体级联持久化操作:一些等价物。 要解决这个问题:要么显式调用 EntityManager#persist() 这个未知实体或配置级联将这个关联保持在 例如@ManyToOne(..,cascade={"persist"}) 的映射。
我做错了什么?我现有的级联定义不应该涵盖这种行为吗?我该怎么做才能解决这个问题?
【问题讨论】:
标签: php symfony doctrine sonata-admin