2012-01-13 67 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