2012-01-13 29 views
41

Lỗi

Không thể xóa hoặc cập nhật hàng gốc: hạn chế khóa ngoài không thành công.Doctrine 2 OneToMany Cascade SET NULL

Các lớp

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

Tôi muốn

Những gì tôi muốn là làm cho nó rằng khi bạn xóa một giáo viên, các id_teacher được sửa đổi để NULL. Tôi muốn giữ ấn phẩm nhưng không tham chiếu đến Giáo sư.

Tôi không biết cách thực hiện điều đó trong Doctrine, có thể không? Hay luôn luôn có mối quan hệ với một giáo viên?

Trả lời

127

Bạn nên thêm tùy chọn onDelete="SET NULL" trong chú thích của bản thực thể của bạn như thế này:

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

Cheers!

+13

trả lời giữa năm 2012 và vẫn giúp tôi ngay hôm nay! cảm ơn! –

+11

Xin lưu ý rằng bạn phải cập nhật lược đồ cơ sở dữ liệu của mình sau khi bạn đã thêm điều này. – priktop

Các vấn đề liên quan