2012-01-13 52 views
41

错误

无法删除或更新父行:外键约束失败。Doctrine 2 OneToMany Cascade SET NULL

的类

class Teacher { 

    /** 
    *@ORM\OneToMany(targetEntity="publication", mappedBy="teacher") 
    */ 
    protected $publications; 
} 

class Publication { 

    /** 
    * @ORM\ManyToOne(targetEntity="Teacher", inversedBy="publications") 
    * @ORM\JoinColumn(name="teacher_id", referencedColumnName="id") 
    */ 
    protected $teacher; 
} 

我想

我想是让它当你删除一个老师,id_teacher被修改为NULL。我想保留这份出版物,但没有提及教授。

我不知道在教条中怎么做,这可能吗?或者总是和老师有关系?

回答

127

您应该添加的选项onDelete="SET NULL"在实体出版这样的注解:

class Publication 
{ 
    /** 
    * @ORM\ManyToOne(targetEntity="Teacher", inversedBy="publications") 
    * @ORM\JoinColumn(name="teacher_id", referencedColumnName="id", onDelete="SET NULL") 
    */ 
    protected $teacher; 
} 

干杯!

+13

2012年中旬回答,仍然帮助我今天!谢谢! – 2014-11-21 13:38:39

+11

请注意,您必须在添加完数据库模式后更新数据库模式。 – priktop 2015-02-10 10:58:22

相关问题