2016-03-31 4 views
1

Ich versuche, eine Eins-zu-viele-Beziehung in Symfony mit Annotations Mapping erstellen. Alles scheint gut, aber die Einschränkung funktioniert nicht. Ich kann Daten in die Produkttabelle einfügen, ohne Daten in die Tabelle des Lieferanten einzufügen, da der Lieferant eine Super-Entität ist. Das ist mein Versuch:ManyToOne Beziehung funktioniert nicht in Symfony mit Annotations Mapping

product.php

/** 
    * @ORM\ManyToOne(targetEntity="Supplier", inversedBy="products") 
    * @ORM\JoinColumn(name="$supplierId", referencedColumnName="$id") 
    */ 
    private $supplier; 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="supplier_id", type="integer") 
    */ 
    private $supplierId; 

supplier.php

/** 
    * @ORM\OneToMany(targetEntity="Product", mappedBy="$supplier") 
    */ 
    private $products; 

    public function __construct() 
    { 
     $this->products = new ArrayCollection(); 
    } 

Nach der obigen Zugabe lief ich diesen Befehl

php bin/console doctrine:schema:update --force 

Aber die Beziehung wird nie erstellt, bitte was könnte falsch sein?

Antwort

1

Es ist, weil Sie PHP-Variablen im Namen verwenden und mappedBy entfernen $ Zeichen von

@ORM\JoinColumn(name="$supplierId", referencedColumnName="$id") 

und

@ORM\OneToMany(targetEntity="Product", mappedBy="$supplier") 

Es sollte

product.php

/** 
* @ORM\ManyToOne(targetEntity="Supplier", inversedBy="products") 
*/ 
private $supplier; 
/** 
* @var integer 
* 
* @ORM\Column(name="supplier_id", type="integer") 
*/ 
private $supplierId; 
sein

Supplier.php

/** 
* @ORM\OneToMany(targetEntity="Product", mappedBy="supplier") 
*/ 
private $products; 

Weitere Informationen finden Sie here

auch finden, wenn Sie Probleme Array Sammlung Produkte Variablen zuweisen vermeiden wollen.

+0

Bitte Beispiel anzeigen. – Blaze

+0

Ich habe Update überprüft – Robert

+0

Nach der Änderung in Ihrer Antwort oben, wenn ich diesen Befehl ausführen php bin/Konsole Doktrin: Schema: Update - Force – Blaze

Verwandte Themen