簡介:
許多一對多關係通常涉及附加字段,這些字段提供特定於每個關係實例的額外資訊。然而,在原則 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;
其他注意事項:
以上是如何在原則 2 中使用額外欄位建模多對多關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!