Doctrine2 Un-À-Plusieurs ou Plusieurs-À-Un les relations

Donc, 1:M /M:1 relations ne fonctionnent pas de la façon de M:M de relations de travail (évidemment), mais je pensais qu'avec la bonne configuration, vous pouvez obtenir le même résultat en tant que M:M relation.

En gros, j'ai besoin d'ajouter un autre champ (position), à path_offer.

J'ai pensé que je l'ai eu à travailler jusqu'à ce que j'ai essayé d'utiliser $path->getOffers() qui a retourné un PersistentCollection au lieu de ce que je pensais forcée (un ArrayCollection de l'Offre). De toute façon, à l'intérieur de la table actuelle, j'ai deux entrées: deux offres pour un seul chemin. $path->getOffers() est de retour une PersistantCollection d'un PathOffer qui a seulement une Offer attatched et pas les deux.

Ma question est de savoir comment vraiment utiliser ces types de relations? Parce que j'en ai besoin avec de nombreux autres aspects de ce projet, je travaille sur (beaucoup de M:M collections doivent également être positionné)

Mon code est ci-dessous!

Path.php

[..]

/**
 * @ORM\Entity
 * @ORM\Table(name="path")
 */
class Path
{
    /**
     * @var integer
     *
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @ORM\OneToMany(targetEntity="PathOffer", mappedBy="offer", cascade={"all"})
     */
    protected $offers;

[..]

PathOffer.php

[..]

/**
 * @ORM\Entity
 * @ORM\Table(name="path_offer")
 */
class PathOffer
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @ORM\ManyToOne(targetEntity="Path", inversedBy="offers", cascade={"all"})
     */
    protected $path;

    /**
     * @ORM\ManyToOne(targetEntity="Offer", inversedBy="offers", cascade={"all"})
     */
    protected $offer;

    /**
     * @ORM\Column(type="integer")
     */
    protected $pos;

[..]

Offer.php

[..]

/**
 * @ORM\Entity
 * @ORM\Table(name="offer")
 */
class Offer
{
    /**
     * @var integer
     *
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @var \ZGoffers\MainBundle\Entity\PathOffer
     *
     * @ORM\OneToMany(targetEntity="PathOffer", mappedBy="path", cascade={"all"})
     */
    protected $paths;

[..]
J'ai enfin trouvé une solution pour ce. Vous pouvez regarder dans le code source prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html

OriginalL'auteur Jordan | 2011-06-28