web-dev-qa-db-ja.com

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に変更されるようにすることです。私は出版を続けたいが、教授には言及しない。

Doctrineでどのようにそれを行うのかわかりません、それは可能ですか?それとも、常に関係は教師とでなければなりませんか?

54
Nicolas Lino

次のように、エンティティPublicationの注釈にオプションonDelete="SET NULL"を追加する必要があります。

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

乾杯!

163
David Barreto