【发布时间】:2015-08-07 05:32:19
【问题描述】:
我有两个相关的类(OneToMany):
<?php
class Container {
/**
* @var Content[]
* @\Doctrine\ORM\Mapping\OneToMany(targetEntity="Content", mappedBy="contents", cascade={"remove"})
*/
protected $contents;
}
class Content {
/**
* @var Container
* @\Doctrine\ORM\Mapping\ManyToOne(targetEntity="Container", inversedBy="contents", cascade={"persist"})
*/
public $container;
}
现在,当我添加一个新的内容项时,容器将在数据库中复制,并且新的内容项链接到副本。
我使用父Container的id,像这样:
<?php
$newContent->container = $repository->find($passedIdOfContainer);
// ...
$em->persist($newContent);
$em->flush();
所以基本上我只是从数据库中获取现有实体记录(有效),并使用现有对象设置我的新内容对象的属性。但是现在父级(容器)将被复制。
当我删除 cascade={"persist"} 时,我收到以下错误:
通过关系“Content#Container”找到了一个新实体 未配置为对实体进行级联持久化操作: 容器@0000...
我需要做什么,以创建新的孩子,参考父母,而不在数据库中复制父母?
【问题讨论】:
标签: php doctrine-orm cascade