2013-09-06 30 views
16

Làm cách nào để thiết lập bảng nối kết với các cột bổ sung hoặc liên kết nhiều thành phần với các thuộc tính bổ sung, trong Doctrine 2?Học thuyết 2: Cách xử lý các bảng nối với các cột phụ

+0

@ThatBlairGuy tôi nhận thấy bạn đang loại bỏ rất nhiều các [tag: thêm] thẻ. Chỉnh sửa này là đầy đủ, nhưng hãy đảm bảo _fix tất cả các khía cạnh của bài đăng ngoài việc xóa thẻ. Để biết thêm, hãy đọc [thảo luận meta] này (https://meta.stackoverflow.com/questions/314488/how-to-deal-with-serial-tag-only-edits-from-sub-2k-users) – ryanyuyu

Trả lời

50

Trước hết, hãy để tôi giải thích rằng điều này không tồn tại:

Một tham gia bảng (còn được gọi là một bảng ngã ba hoặc tham chiếu chéo bảng) là một bảng liên kết 2 (hoặc nhiều hơn) các bảng khác cùng nhau trong cùng một cơ sở dữ liệu bằng khóa chính. Điều này có nghĩa là bảng nối sẽ chỉ chứa khóa ngoài, không có chỗ cho các cột bổ sung này.

Vì vậy, khi bạn cần thêm cột trong bảng như vậy, nó không còn chỉ là "liên kết" giữa các bảng khác, nhưng tự nó trở thành một bảng thực!

Trong điều khoản của Doctrine 2, bạn không còn có liên kết nhiều-nhiều giữa 2 thực thể, nhưng nhận được liên kết một-nhiều/nhiều-một giữa 3 thực thể.

Tiếp tục đọc vào đây để biết thêm chi tiết giải thích:

+0

Những Liên kết bị hỏng, bất cứ ai có thể cập nhật chúng? –

+2

Liên kết được cập nhật! (Định dạng có thể hơi lệch, sẽ được khắc phục càng sớm càng tốt) –

+0

Cảm ơn Rất nhiều vì đã cập nhật các liên kết! –

1

Trong bài viết thứ hai, tôi đề nghị một bản cập nhật nhỏ. Thay vì các sự kiện đầy đủ, sử dụng một LifecycleCallback trong thực thể chính nó:

/** 
* @ORM\Entity 
* @ORM\Table(name="jobs”) 
* @ORM\HasLifecycleCallbacks 
*/ 
class Job 
{ 
    // ... 

    /** 
    * @ORM\PreRemove 
    */ 
    public function preRemoveCallback() 
    { 
     $this->setPerson(null); 
     $this->setCompany(null); 
    } 
} 
Các vấn đề liên quan