Doctrine2 One-To-many / Many-To-One-Beziehungen

So, 1:M /M:1-Beziehungen nicht so funktionieren, wie M:M Beziehungen arbeiten (offensichtlich), aber ich dachte, dass mit der richtigen Konfiguration können Sie erhalten die gleiche Ausgabe wie eine M:M Beziehung.

Im Grunde brauchte ich eine weitere hinzufügen-Feld (position), um path_offer.

Ich dachte, ich habe es zu arbeiten, bis ich versuchte mit $path->getOffers() welche zurückgegeben PersistentCollection statt, was ich dachte, ist gezwungen (ein ArrayCollection Angebote). Trotzdem, innerhalb der aktuellen Tabelle, ich habe zwei Einträge: zwei Angebote zu einem Pfad. $path->getOffers() ist wieder ein PersistantCollection einer PathOffer die nur eine Offer gehängt und nicht beide.

Meine Frage ist, wie man wirklich nutzen diese Arten von Beziehungen? Da brauche ich es mit vielen anderen Aspekten dieses Projekt an dem ich arbeite (viele M:M-Sammlungen müssen auch positioniert werden)

Mein code ist unten!

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;

[..]
InformationsquelleAutor Jordan | 2011-06-28
Schreibe einen Kommentar