2016-03-31 33 views
1

私はsymfonyでアノテーションマッピングを使用して1対多の関係を作成しようとしています。すべてうまく見えますが、制約は機能していません。サプライヤがスーパーエンティティであるため、サプライヤのテーブルにデータを挿入することなく、製品テーブルにデータを挿入できます。 これは私の試みです:Annotationsマッピングを使用してSymfonyでManyToOne関係が動作しない

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

関連する問題