Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Doctrine 2 join table + extra fields

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")?
like image 456
waigani Avatar asked Dec 14 '10 03:12

waigani


1 Answers

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.

like image 113
timdev Avatar answered Oct 12 '22 05:10

timdev