Doctrine orm 原则2.4不删除孤儿-奴隶-多个关系对象

Doctrine orm 原则2.4不删除孤儿-奴隶-多个关系对象,doctrine-orm,Doctrine Orm,有人能指出为什么孤儿移除不适用于以下多人关系吗 我的意思是,中间多对多表可以创建/更新/删除它的行,但结束/从属表不会删除孤立行 非常感谢,这是我的地图 Class TaskRecursive { /** * @Assert\Valid * @ORM\ManyToMany( targetEntity="TaskAttachment", inversedBy="tasks", cascade={ "persist" }, orphanRe

有人能指出为什么孤儿移除不适用于以下多人关系吗

我的意思是,中间多对多表可以创建/更新/删除它的行,但结束/从属表不会删除孤立行

非常感谢,这是我的地图

Class TaskRecursive { /** * @Assert\Valid * @ORM\ManyToMany( targetEntity="TaskAttachment", inversedBy="tasks", cascade={ "persist" }, orphanRemoval=true, fetch="EAGER" ) * @ORM\JoinTable( * name="tasks_attachments", * joinColumns={@ORM\JoinColumn(name="task_id", referencedColumnName="id", onDelete="CASCADE" )}, * inverseJoinColumns={@ORM\JoinColumn(name="task_attachment_id", referencedColumnName="id")} * ) */ private $tasksAttachmentsTask; Class TaskAttachment { /** * @ORM\ManyToMany( targetEntity="TaskRecursive", mappedBy="tasksAttachmentsTask" ) */ private $tasks;
你能试着把它去掉吗?另外,在从
tasksrecursive\tasksAttachmentsTask
中删除项目后,尝试在
doctor\ORM\UnitOfWork
中跟踪计划的删除,以验证是否确实计划了删除(这发生在调用
doctor\ORM\EntityManager\flush()
之前尝试侦听flush::$eventArgs->getEntityManager()->getUnitOfWork()->GetScheduledEntityDeletes(),还有GetScheduledCollectionDeletes()和getScheduledCollectionUpdates(),但没有计划删除的实体。是否调用了? /** * Set tasksAttachmentsTask * * @param \Doctrine\Common\Collections\ArrayCollection $taskAttachmentsTask * @return TaskRecursive */ public function setTasksAttachmentsTask( \Doctrine\Common\Collections\ArrayCollection $taskAttachments ) { if( $taskAttachments != $this->tasksAttachmentsTask ) { foreach( $taskAttachments as $tasAttachment ) { $tasAttachment->addTaskRecursive( $this ); } $this->_onPropertyChanged( 'tasksAttachmentsTask', $this->tasksAttachmentsTask, $taskAttachments ); //Orphan removal is not working fine, so le'ts removed orphan objects by hand foreach( $this->tasksAttachmentsTask as $ta ) { if( !$taskAttachments->contains( $ta ) && $ta->getTasks()->count() < 2 ) { $this->tasksAttachmentsTask->removeElement( $ta ); } } $this->tasksAttachmentsTask = $taskAttachments; } return $this; }