原则 2 中带有额外字段的多对多链接表
简介
数据库建模通常涉及创建多对多关系。在需要为每个关系存储附加信息的情况下,传统的多对多表就变得不够了。本文探讨了如何使用 Doctrine 2 创建此类关系,其中在链接表中添加了一个额外的字段。
挑战
最初,尝试创建多对多关系附加字段导致链接表没有所需值。随后尝试重组数据库布局以包含与“产品”和“商店”实体关系的单独“库存”表也被证明是不成功的。
解决方案
解决问题的关键这个问题在于理解与附加值的多对多关联成为一个独特的实体。在此示例的上下文中,“Stock”表及其“amount”字段表示一个单独的实体,该实体不再是纯粹的多对多关系。
实体模型
基于这个理解,下面的实体模型是提议:
产品:
商店:
Stock:
使用 Doctrine 2 进行映射
相应的 Doctrine 2 实体映射如下所示:
// Product.php class Product { /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */ protected $stockProducts; } // Store.php class Store { /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */ protected $stockProducts; } // Stock.php class 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; }
通过遵循这种方法,您可以使用 Doctrine 2 创建与附加字段的复杂数据库关系,从而提供更大的数据灵活性建模。
以上是如何在原则 2 中实现带有额外字段的多对多关系?的详细内容。更多信息请关注PHP中文网其他相关文章!