我有一个旧的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实体时出现问题。我收到以下错误:
通过这种关系找到了一个新的实体 &#39;应用程序\奏\ PageBundle \实体\页#当量&#39;那不是 配置为级联实体的持久化操作:一些等效的。 解决此问题:显式调用EntityManager#persist()on 这个未知的实体或配置级联持久存在此关联 映射例如@ManyToOne(..,cascade = {&#34; persist&#34;})。
我做错了什么?我现有的级联定义是否不应涵盖此行为?我该怎么做才能解决这个问题?
答案 0 :(得分:1)
关联字段缺少定义。将映射添加到:
<one-to-many target-entity="AppBundle\Entity\Equivalent" field="equivalents" mapped-by="page">
<cascade>
<cascade-all/>
</cascade>
</one-to-many>
和反转到:
/**
* @var \Application\Sonata\PageBundle\Entity\Page
* @ORM\ManyToOne(targetEntity="Application\Sonata\PageBundle\Entity\Page", inversedBy="equivalents", cascade={"persist"})
*/
private $page;