2016-03-31 77 views
1

我想在symfony中使用註釋映射創建一對多關係。一切似乎都很好,但約束不起作用。由於供應商是超級實體,因此我可以在產品表上插入數據而不在供應商的表上插入數據。 這是我的嘗試:ManyToOne關係在Symfony中使用註釋映射不起作用

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(); 
    } 

加入以上後,我跑這個命令

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

但是關係永遠不會被創建,請問可能會出現什麼問題?

回答

1

這是因爲你使用的PHP變量名和來自的mappedBy

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

刪除 $標誌
@ORM\OneToMany(targetEntity="Product", mappedBy="$supplier") 

應該

Product.php

​​

Supplier.php

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

更多信息,你會發現here

此外,如果你想避免的問題數組集合分配給產品變量。

+0

請舉例說明。 – Blaze

+0

我沒有檢查更新 – Robert

+0

在上面的回答中修改後,當我運行這個命令php bin/console doctrine:schema:update --force – Blaze