0

私は3つのエンティティを持っています:

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 によって削除されます。質問 - 削除方法と削除時のメッセージ カバーセーションはメッセージの最後の関係です。

4

1 に答える 1

1

あなたが探しているのはDoctrine2の「孤立した除去」だと思います

タイプ A のエンティティに個人所有のエンティティ B への参照が含まれている場合、A から B への参照が削除された場合、エンティティ B も削除する必要があります。これは、エンティティ B が使用されなくなったためです。

于 2013-02-01T08:44:53.267 に答える