0

(2〜3年前にsymfony 1.xを使っていました)ImとDoctrine2とのエンティティの関係を処理する方法を理解しようとしています。 (ちなみに、Symfony2の本にDoctrine2のドキュメントを単に参照するのではなく、より多くの関係の例があればいいですね:-)Doctrine2エンティティの関係

私は複数のカテゴリに関連したい単純な製品エンティティを持っています複数のカテゴリーに分かれています)。表面上は、これは1対多の関係のように見えますが、そのような関係はデータベース内の結合テーブルを介して行われると考えています。だから、代わりにこのような何かをしている:

実際にスキーマの更新を行うと、期待どおりデータベースに結合テーブルが作成されます。しかし、Imはこれを多対多にするのに間違っているのだろうかと疑問に思っていますか?私はベストプラクティスについて尋ねていると思います。誰も助言したり、例を提供することはできますか?

答えて

2

「単一の商品は複数のカテゴリに分類できます」という文は真ですが、「複数の商品は複数のカテゴリに分類できます」

  • 「カテゴリは多くの製品を持つことができる」

これを「製品は多くカテゴリを持つことができる」:あなたは良い文章を、使用していないからです多対多の関係があることを意味します。

それは

  • た場合
  • "カテゴリは多くの製品を持つことができる"

"製品だけカテゴリを持つことができます" その後、あなたは1を持っていると思います多対1の関係になります。あなたは、多くの関係に多くをしたい場合は

+0

感謝が必要になります - 理にかなっています。 – Eno

0

あなたは中間テーブルに明確にするための

class Product 
{ 
    /** 
    * @ManyToMany(targetEntity="Categories") 
    * @JoinTable(name="Product_Category", 
    *  joinColumns={@JoinColumn(name="product_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@JoinColumn(name="Category_id", referencedColumnName="id")} 
    *  ) 
    */ 
    private $categories; 
} 
+1

Doctrine2が自動的に選ぶ(賢明な)デフォルトを気にしない限り、結合テーブルやカラムを指定する必要はありません。 (http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#mapping-defaultsを参照してください) – Eno

+0

よくありますが、関係はメイクです。 :) – SERPRO

+1

注釈が大好きですが、コードを読むときに気を散らします:-) – Eno

関連する問題