概要:
Many対多の関係には、多くの場合、各関係インスタンスに固有の追加情報を提供する追加フィールドが含まれます。ただし、Doctrine 2 でそのような関係を扱うのは少し難しい場合があります。この記事の目的は、これらの関係を効果的にモデル化する方法を明確にすることです。
問題:
ユーザーは、多対多の関係を持つデータベース モデルを作成しようとしました。在庫管理用の追加フィールドが含まれていました。しかし、在庫量の値にアクセスし、Doctrine のスキーマ ツールを使用してデータベース テーブルを生成しようとしたときに問題が発生しました。
解決策:
多くのことを理解する追加フィールドを使用した -対多の関係
多対多の関係追加フィールドを含む は、識別子 (接続されたエンティティとの関係) と値を持っているため、本質的にそれ自体が新しいエンティティになります。したがって、値のないリンク テーブルとしてモデル化するだけでは十分ではありません。
追加フィールドとのリレーションシップ用に別個のエンティティを作成する
推奨されるアプローチは、別個のエンティティを作成することです。 、この場合は「Stock」など、関係を表し、追加のフィールドが含まれています。このエンティティは、関係するエンティティの両方との関係を確立し、各関係は「Stock」エンティティの外部キーによって表されます。
コード例:
例を次に示します。 Doctrine 2 でエンティティをどのように定義できるかについて注釈:
// Product Entity @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") protected $stockProducts; // Store Entity @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") protected $stockProducts; // Stock Entity @ORM\Id() @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") protected $store; @ORM\Id() @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") protected $product;
追加の考慮事項:
以上がDoctrine 2 の追加フィールドを使用して多対多の関係をモデル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。