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