使用原则 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中文网其他相关文章!