Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Doctrine 2 OneToMany Cascade SET NULL

The error

Cannot delete or update a parent row: a foreign key constraint fails.

The classes

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; } 

I want

What I want is to make it that when you delete a teacher, the id_teacher is modified to NULL. I want to keep the publication but without reference to Professor.

I don't know how do that in Doctrine, Is it possible? Or always the relationship has to be with a teacher?

like image 627
Nicolas Lino Avatar asked Jan 13 '12 23:01

Nicolas Lino


1 Answers

You should add the option onDelete="SET NULL" in the annotation of your entity Publication like this:

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

Cheers!

like image 191
David Barreto Avatar answered Sep 25 '22 05:09

David Barreto