2016-09-02 5 views
0

Benutzer können campaigns nur sehen, wenn sie ihnen zugewiesen sind. Die Tatsache, dass sie eine Kampagne sehen können, bedeutet nicht, dass sie daran teilnehmen. Ich möchte dem Benutzer die Möglichkeit geben, sich an der Kampagne zu beteiligen.Zusätzliches Feld in Viele-zu-viele-Beziehung

Ich benutze bidirektionale, ManyToMany Beziehung, Tabelle user_campaign wurde automatisch erstellt. Gibt es eine Möglichkeit, ein zusätzliches Feld wie participating hinzuzufügen? Ich möchte lieber keinen neuen Tisch erstellen.

Entity User.php

/** 
* @ORM\ManyToMany(targetEntity="Reko\CampaignBundle\Entity\Campaign", inversedBy="users") 
* @ORM\OrderBy({"id" = "DESC"}) 
* @ORM\JoinTable(name="user_campaign") 
*/ 
protected $campaigns; 

Entity Campaign.php

/** 
* @ORM\ManyToMany(targetEntity="Reko\UserBundle\Entity\User", mappedBy="campaigns") 
*/ 
protected $users; 
+0

Zusätzliche Daten auf einem 'm: n' bedeuten immer, dass eine zwischengeschaltete Entität benötigt wird, um diese zusätzlichen Daten zu übertragen. Die neue Entität hat dann eine "1: n" zu den zwei ursprünglichen Entitäten. – Yoshi

Antwort

0

Basicall, was Sie brauchen, ist zwei ManyToMany Beziehungen zwischen den Nutzern und Kampagnen. Eins, das Aufgaben repräsentiert, eines, das die Teilnahme darstellt. Da die Doktrin automatisch nur ein verbindliches Objekt erstellen kann, müssen Sie Ihre beiden gemeinsamen Elemente manuell in Anmerkungen benennen und Ihnen geht es gut!

Verwandte Themen