Symfony2:如何在preRemove中删除父关系

时间:2013-02-01 08:40:28

标签: symfony doctrine-orm

我有三个实体:

class User
{
    @ORM\OneToMany(targetEntity="Conversation", mappedBy="sender", cascade={"remove"})
    private $send_messages;
}

///

class Conversation
{
    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="send_messages")
     * @ORM\JoinColumn(name="sender_id", referencedColumnName="id", onDelete="SET NULL")
     */
    private $sender;
}

///

class Message
{
    /**
     * @ORM\OneToMany(targetEntity="Conversation", mappedBy="message")
     */
    private $conversations;

    /**
     * @ORM\PreRemove
     */
    function onPreRemove()
    {
         // how remove parent relationship ????
    }
}

当我删除用户时,CASCADE删除了对话。问题 - 如何删除和删除时的消息对话是消息的最后关系。

1 个答案:

答案 0 :(得分:1)

我认为你要找的是Doctrine2“Orphan removal

  

如果类型A的实体包含对私有实体B的引用,那么如果从A到B的引用被删除,则实体B也应该被删除,因为它不再被使用。