我有三个实体:
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删除了对话。问题 - 如何删除和删除时的消息对话是消息的最后关系。
答案 0 :(得分:1)
我认为你要找的是Doctrine2“Orphan removal”
如果类型A的实体包含对私有实体B的引用,那么如果从A到B的引用被删除,则实体B也应该被删除,因为它不再被使用。