使用原則2 管理具有附加欄位的多對多關係
在資料庫建模中,多對多關係通常涉及用於在實體之間建立連結的連結表。然而,當附加價值與這些連結表關聯時,傳統的多對多關係就變得不夠了。
考慮系統需要追蹤多個商店中的產品庫存的場景。可以使用以下資料庫結構建立基本的多對多關係:
Product: - product_id - product_name Store: - store_id - store_name Stock: - amount - product_id - store_id
但是,此結構缺乏追蹤產品和商店每種組合的庫存量的能力。為了解決這個問題,可以將附加欄位(例如“金額”)添加到“庫存”表中。這會產生一個新實體,而不僅僅是一個連結表,因為它現在同時擁有識別碼和值。
在原則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;
透過定義一個與「產品」和「商店」具有雙向關係的單獨「庫存」實體,我們可以有效管理與每個產品和商店組合相關的庫存量。
以上是如何管理教義 2 中帶有附加欄位的複雜多對多關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!