I am trying to develop a friends system, and I need a Many-To-Many relation on my User entities ; for now, this is what I’ve done :
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="friends")
*/
protected $friendsWith;
/**
* @ORM\ManyToMany(targetEntity="User", inversedBy="friendsWith")
* @JoinTable(name="friends",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="friend_user_id", referencedColumnName="id")}
* )
*/
protected $friends;
But I would like to have some extra fields for these relations, for example the creation date or the state (accepted, pending, …) ; I’ve created another entity “Friend”, and I would like this entity to be used as a link between friends. But I don’t really know how to manage this…
Do you have some ideas ?
Thanks !
I’m afraid you need an extra class to make such an association.
Here is the tip from doctrine documentation:
http://www.doctrine-project.org/docs/orm/2.1/en/reference/association-mapping.html#many-to-many-unidirectional
I guess it should be Friend -> Special Association Class (with fileds: user_id, friend_id, date created) ->Friend.
And you associate Friend to special class in two filed $myFriends and $imFriendOf 🙂