如何在原則 2 中使用額外欄位建模多對多關係?

Linda Hamilton
發布: 2024-11-25 11:57:14
原創
175 人瀏覽過

How to Model Many-to-Many Relationships with Extra Fields in Doctrine 2?

有額外欄位的多對多連結表:深入解釋

簡介:

許多一對多關係通常涉及附加字段,這些字段提供特定於每個關係實例的額外資訊。然而,在原則 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板