Doctrine 2 join table + extra fields

2019-02-07 23:54发布

问题:

I've got two tables and a join table: 'staff', 'classification' and 'staff_classification'. In the join table I've got an extra boolean field: 'showclassification'. My annotation is as follows:

 /**
 * @ManyToMany(targetEntity="Staff", inversedBy="classifications")
 * @JoinTable(name="staff_classifications",
 *  joinColumns={@JoinColumn(name="staffid", referencedColumnName="id")},
 *  inverseJoinColumns={@JoinColumn(name="classificationid", referencedColumnName="id", unique=true)});
 */
  1. How do I add the extra field 'showclassifications' to the join table?
  2. How do I reference the field via DQL? E.g. What query would get all of a staff's classifications that are allowed to be shown?
  3. Do I place the above annotation in one class and a @ManyToMany annotation with no @joinTable in the other? E.g. @ManyToMany (targetEntity="Classification")?

回答1:

You want an entity that describes the relationship (StaffClassifications), which has OneToMany relationships with both staff and classifications.

ManyToMany doesn't allow you have any "extra" properties, because the join table is not an entity, and thus can't have any properties.