8

問題

Symfony2 と Doctrine2 (注釈) を使用してデータベースをセットアップしています。私は完全に例に従いました ( Doctrine2 関係のドキュメント) が、どういうわけかスキーマを更新すると ( doctrine:schema:update --force)、2 つの追加のテーブルが作成されます。

私の 2 つのエンティティは Article と District です。コードは以下のとおりです。

コード

記事エンティティ:

/**
 *
 * @var \Doctrine\Common\Collections\ArrayCollection $districts
 *
 * @ORM\ManyToMany(targetEntity="District", inversedBy="articles")
 * @ORM\JoinTable(name="articles_districts",
 *     joinColumns={@ORM\JoinColumn(name="article_id", referencedColumnName="id")},
 *     inverseJoinColumns={@ORM\JoinColumn(name="district_id", referencedColumnName="id")}
 * )
 */
protected $districts;

地区エンティティ:

/**
 *
 * @var \Doctrine\Common\Collections\ArrayCollection $articles
 * @ORM\ManyToMany(targetEntity="Article", inversedBy="districts")
 */
protected $articles;

質問

作成される 2 つの追加のテーブルは、( articles_districtsJoinTable セクションで指定したもの) とarticle_district(何らかの方法で自動的に作成されるもう 1 つのテーブル) です。

テーブルはarticles_districts期待どおりに機能し、新しいエントリが作成されると ID が挿入されます。は空のarticle_districtままなので、かなり役に立ちません。どうすればそれを取り除くことができますか?

4

1 に答える 1

14

地区エンティティは、mappedBy アノテーションを使用する必要があります。

/**
 *
 * @var \Doctrine\Common\Collections\ArrayCollection $articles
 * @ORM\ManyToMany(targetEntity="Article", mappedBy="districts")
 */
protected $articles;

現時点では、エンティティ関係に 2 つの所有側を持たせようとしています: http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#many-to-many-bidirectional

于 2013-01-15T11:10:52.847 に答える