2012-01-13 8 views
41

Błąd

Nie można usunąć lub zaktualizować wiersza nadrzędnego: nie można zastosować ograniczenia klucza obcego.Doctrine 2 OneToMany Casset SET NULL

Klasy

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

Chcę

Co chcę to zrobić to, że po usunięciu Nauczycielem, id_teacher jest modyfikowany na NULL. Chcę zachować publikację, ale bez odniesienia do profesora.

Nie wiem jak to zrobić w Doctrine, czy to możliwe? Lub zawsze związek musi być z nauczycielem?

Odpowiedz

127

Należy dodać opcję onDelete="SET NULL" w adnotacji swojej jednostki Publikacja takiego:

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

Cheers!

+13

odpowiedział połowie 2012 roku i nadal mi pomógł już dziś! dzięki! –

+11

Należy pamiętać, że należy zaktualizować schemat bazy danych po dodaniu tego. – priktop