Doctrine 2: How to handle join tables with extra columns

Jasper N. Brouwer picture Jasper N. Brouwer · Sep 6, 2013 · Viewed 22.7k times · Source

How do I setup a join table with extra columns, or a many-to-many association with additional properties, in Doctrine 2?

Answer

Jasper N. Brouwer picture Jasper N. Brouwer · Sep 6, 2013

First off, let me explain that this does not exist:

A join table (also known as a junction table or cross-reference table) is a table that links 2 (or more) other tables together within the same database by primary key. This means that a join table will only contain foreign keys, there is no place for these extra columns.

So when you need extra columns in such a table, it is no longer just a "link" between other tables, but becomes a real table on its own!

In terms of Doctrine 2, you no longer have a many-to-many association between 2 entities, but get a one-to-many/many-to-one association between 3 entities.

Continue reading here for more details explanations: