2012-01-13 20 views
41

Hata

Bir üst satır silinemiyor veya güncelleştirilemiyor: Yabancı anahtar kısıtlaması başarısız.Doctrine 2 OneToMany Kaset SET NULL

sınıflar
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; 
} 

Ben

Sizden tek istediğim bir öğretmen sildiğinizde, id_teacher NULL'A değiştirilir işte bu yapmaktır istiyorum. Yayını tutmak istiyorum ama Profesöre başvurmadan.

Doctrine'de bunun nasıl olduğunu bilmiyorum, Bu mümkün mü? Ya da her zaman ilişki bir öğretmenle mi olmalı?

cevap

127

Böyle senin varlık Yayın açıklama seçeneğini onDelete="SET NULL" eklemek gerekir:

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

Şerefe!

+13

2012 yılının ortalarında yanıt verdi ve bugün bana yardımcı oldu! Teşekkürler! –

+11

Veritabanı şemasını ekledikten sonra güncellemeniz gerektiğini lütfen unutmayın. – priktop