2012-01-13 20 views
41

エラー

親行を削除または更新できません。外部キー制約は失敗します。Doctrine 2 OneToManyカスケード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年半ばに回答しましたが、今でも私を助けました!ありがとう! –

+11

これを追加した後でデータベーススキーマを更新する必要があることに注意してください。 – priktop

関連する問題