Doctrine 2 を使用した追加フィールドとの多対多の関係の管理
データベース モデリングでは、多対多の関係には多くの場合、エンティティ間の接続を確立するためのリンク テーブル。ただし、追加の値がこれらのリンク テーブルに関連付けられている場合、従来の多対多の関係は不十分になります。
システムが複数の店舗の製品の在庫を追跡する必要があるシナリオを考えてみましょう。基本的な多対多の関係は、次のデータベース構造で作成できます:
Product: - product_id - product_name Store: - store_id - store_name Stock: - amount - product_id - store_id
ただし、この構造には、製品と店舗の組み合わせごとに在庫量を追跡する機能がありません。これに対処するには、「金額」などのフィールドを「在庫」テーブルに追加します。これにより、識別子と値の両方を持つようになり、単なるリンク テーブルではなく新しいエンティティが作成されます。
Doctrine 2 では、これは次のエンティティ定義を使用して実装できます:
Product: /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */ protected $stockProducts; Store: /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */ protected $stockProducts; Stock: /** ORM\Column(type="integer") */ protected $amount; /** @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") */ protected $store; /** @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") */ protected $product;
「製品」と「店舗」の両方に対する双方向の関係を持つ個別の「在庫」エンティティを定義することで、各製品と店舗の組み合わせに関連付けられた在庫量を効果的に管理できます。
以上がDoctrine 2 の追加フィールドとの複雑な多対多の関係を管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。