2010-12-14 35 views
19

Tôi có hai bảng và một bảng tham gia: 'staff', 'classification' và 'staff_classification'. Trong bảng kết nối, tôi có thêm một trường boolean: 'showclassification'. chú thích của tôi là như sau:Học thuyết 2 tham gia bảng + các trường phụ

/** 
* @ManyToMany(targetEntity="Staff", inversedBy="classifications") 
* @JoinTable(name="staff_classifications", 
* joinColumns={@JoinColumn(name="staffid", referencedColumnName="id")}, 
* inverseJoinColumns={@JoinColumn(name="classificationid", referencedColumnName="id", unique=true)}); 
*/ 
  1. Làm thế nào để tôi thêm các trường bổ sung 'showclassifications' vào bảng tham gia?
  2. Làm cách nào để tham chiếu trường thông qua DQL? Ví dụ. Truy vấn nào sẽ nhận được tất cả phân loại của nhân viên được phép hiển thị?
  3. Tôi có đặt chú thích ở trên trong một lớp và chú thích @ManyToMany không có @joinTable trong chú thích khác không? Ví dụ. @ManyToMany (targetEntity = "Phân loại")?
+0

Ở đây bạn có thể tìm thấy một bài viết tuyệt vời về cách tiếp cận để tuân theo trong trường hợp này: http://future500.nl/articles/2013/09/doctrine-2-how-to-handle-join-tables-with-extra -columns/ –

Trả lời

32

Bạn muốn một thực thể mô tả mối quan hệ (StaffClassifications), có mối quan hệ OneToMany với cả nhân viên và phân loại.

ManyToMany không cho phép bạn có bất kỳ thuộc tính "bổ sung" nào, vì bảng kết nối không phải là một thực thể và do đó không thể có bất kỳ thuộc tính nào.

+3

+1 Đó là cách OO hợp lý để làm việc. Câu hỏi chính xác này được hỏi rất nhiều về danh sách gửi thư và đó cũng là điều mà nhóm Giáo lý cũng đề xuất. –

+0

tuyệt vời. Cảm ơn, tôi sẽ làm theo mô hình đó và xem tôi đi như thế nào. Chúc mừng. – waigani

+1

Sử dụng mẫu OO, câu trả lời cho câu hỏi 2 ở trên là gì? DQL trông như thế nào? – waigani

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