2012-09-18 33 views
32

我有一个类类别包含此:究竟如何使用onDelete = “SET NULL” - Doctrine2

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

和一类朋友本:

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

我希望能够删除类别,无论这个类别中是否有朋友,并且如果有 - 这个朋友的类别字段被设置为NULL。

我试图把onDelete="CASCADE"的ManyToOne注释,然后到OneToMany,我尝试了上面显示的,我尝试在OneToMany注释中使用cascade={"remove"},并没有任何工作!我也找不到一个例子。你可以帮我吗?

回答

47

这必须是一个疯狂的答案,但你更新数据库架构? onDelete="SET NULL"在数据库级别,它必须在innoDB上工作。

+1

你是天才!非常感谢! – Faery