ホームページ > バックエンド開発 > PHPチュートリアル > Doctrine 2 の追加フィールドとの複雑な多対多の関係を管理するにはどうすればよいですか?

Doctrine 2 の追加フィールドとの複雑な多対多の関係を管理するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-24 18:36:02
オリジナル
381 人が閲覧しました

How to Manage Complex Many-to-Many Relationships with Additional Fields in Doctrine 2?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート