symfony - manager - Beaucoup-à-plusieurs relation avec des champs supplémentaires?



symfony repository (1)

J'ai peur que vous ayez besoin d'une classe supplémentaire pour faire une telle association. Voici la pointe de la documentation de la doctrine:

Pourquoi les associations plusieurs-à-plusieurs sont-elles moins fréquentes? Parce que souvent vous voulez associer des attributs supplémentaires à une association, auquel cas vous introduisez une classe d'association. Par conséquent, l'association directe plusieurs-à-plusieurs disparaît et est remplacée par des associations un-à-plusieurs / plusieurs-à-un entre les trois classes participantes.

http://www.doctrine-project.org/docs/orm/2.1/fr/reference/association-mapping.html#many-to-many-unidirectional

Je suppose que cela devrait être Friend -> Special Association Class (avec fileds: user_id, friend_id, date de création) -> Friend. Et vous associez Friend à une classe spéciale dans deux fichiers $ myFriends et $ imFriendOf :)

J'essaie de développer un système d'amis, et j'ai besoin d'une relation Many-To-Many sur mes entités utilisateur; pour l'instant, c'est ce que j'ai fait:

/**
 * @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;

Mais j'aimerais avoir des champs supplémentaires pour ces relations, par exemple la date de création ou l'état (accepté, en attente, ...); J'ai créé une autre entité "Friend", et j'aimerais que cette entité soit utilisée comme un lien entre amis. Mais je ne sais pas vraiment comment gérer ça ...

Avez-vous des idées?

Merci !