【发布时间】:2016-02-05 11:50:54
【问题描述】:
我有两个相关的对象:
用户
/**
* @ORM\OneToOne(targetEntity="File", mappedBy="userProfileImage")
*/
protected $profileImage;
文件
/**
* @ORM\OneToOne(targetEntity="User", inversedBy="profileImage")
* @ORM\JoinColumn(name="userProfileImage", referencedColumnName="id", onDelete="SET NULL")
*/
protected $userProfileImage;
以及我数据库中的两条相关记录。我想删除旧的 File 对象并用新的 File 替换它。问题是我无法删除 File 对象,因为我有以下错误:
通过关系“MyBundle\Entity\User#profileImage”找到了一个新实体,该实体未配置为对实体进行级联持久化操作:MyBundle\Entity\File@000000001604d7ad000000003cc76066。要解决此问题:在此未知实体上显式调用 EntityManager#persist() 或配置级联在映射中保持此关联,例如 @ManyToOne(..,cascade={"persist"})。如果您无法找出导致问题的实体,请执行“MyBundle\Entity\File#__toString()”以获取线索。
在我看来,调用后删除应该可以工作:
$this->getDoctrine()-getManager()->remove( $user->getProfileImage() );
$this->getDoctrine()-getManager()->flush();
我尝试将cascade={"all"} 和cascade={"persist", "remove"} 添加到$profileImage 注释但没有成功。我需要有人来解释我做错了什么以及我应该怎么做。
【问题讨论】:
标签: symfony doctrine-orm doctrine symfony-2.7