有没有更好的方法来删除关联?

时间:2012-09-17 11:04:48

标签: php doctrine-orm

我有朋友和类别 - 每个朋友属于一个类别。以下是它们的相关性:

类别类中的

/**
 * @ORM\OneToMany(targetEntity="Friend", mappedBy="category", cascade={"remove"})
 * @ORM\OrderBy({"name" = "ASC"})
 */
protected $friends;

朋友类

/**
 * @ORM\ManyToOne(targetEntity="Category", inversedBy="friends")
 * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
 */
protected $category; 

我想要的是删除一个类别,当这种情况发生时,属于这个类别的朋友有一个category = null。有没有办法让这更优雅?

如您所见,我尝试使用cascade={"remove"}并且它很完美,但它也删除了朋友。有没有更好的解决方案,然后从当前类别中选择所有朋友,将他们的类别字段设置为null,然后删除该类别?

1 个答案:

答案 0 :(得分:2)

您应该在onDelete中定义@JoinColumn并将其设置为set nullHere是此文档。