0

我有一个三个实体:

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 删除。问题 - 删除时如何删除和消息 Coversation 是消息的最后一个关系。

4

1 回答 1

1

我认为您正在寻找的是 Doctrine2 “孤儿清除

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

于 2013-02-01T08:44:53.267 回答