首页  >  文章  >  后端开发  >  如何使用链接表对原则 2 中的附加值进行多对多关系建模?

如何使用链接表对原则 2 中的附加值进行多对多关系建模?

Patricia Arquette
Patricia Arquette原创
2024-10-24 19:37:02830浏览

How to Model Many-to-Many Relationships with Additional Values in Doctrine 2 Using a Link Table?

原则 2 和带有附加字段的多对多链接表

理解具有附加值的多对多关系

在在关系数据库模型中,多对多关系表示一个表中的多行可以与另一个表中的多行关联的场景。然而,当额外的值被引入到这种关系中时,它就会转变为一个新的实体。该实体拥有一个标识符(与连接实体的两个关系)和附加数据。

用原则 2 中的附加值建模多对多关系

有效地建模多对多在原则 2 中,许多关系具有附加值,请考虑创建一个单独的表来表示关系。该表通常称为“链接表”,将包含与两个父表建立关系所需的列,以及与该关系关联的任何其他属性。

映射链接表Doctrine 2 中的实体

在 Doctrine 2 的上下文中,您可以将此链接表映射为新实体。让我们举一个涉及产品和商店的示例场景:

产品实体:

<code class="php">namespace Entity;

use Doctrine\ORM\Mapping as ORM;

/** @ORM\Table(name="product") @ORM\Entity() */
class Product
{
    /** @ORM\Id() @ORM\Column(type="integer") */
    protected $id;

    /** ORM\Column(name="product_name", type="string", length=50, nullable=false) */
    protected $name;

    /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product") */
    protected $stockProducts;
}</code>

商店实体:

<code class="php">namespace Entity;

use Doctrine\ORM\Mapping as ORM;

/** @ORM\Table(name="store") @ORM\Entity() */
class Store
{
    /** @ORM\Id() @ORM\Column(type="integer") */
    protected $id;

    /** ORM\Column(name="store_name", type="string", length=50, nullable=false) */
    protected $name;

    /** @ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store") */
    protected $stockProducts;
}</code>

库存实体:

<code class="php">namespace Entity;

use Doctrine\ORM\Mapping as ORM;

/** @ORM\Table(name="stock") @ORM\Entity() */
class Stock
{
    /** ORM\Column(type="integer") */
    protected $amount;

    /** 
     * @ORM\Id()
     * @ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts") 
     * @ORM\JoinColumn(name="store_id", referencedColumnName="id", nullable=false) 
     */
    protected $store;

    /** 
     * @ORM\Id()
     * @ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts") 
     * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false) 
     */
    protected $product;
}</code>

以上是如何使用链接表对原则 2 中的附加值进行多对多关系建模?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn