Heim  >  Artikel  >  Backend-Entwicklung  >  Wie modelliert man Viele-zu-Viele-Beziehungen mit zusätzlichen Werten in Lehre 2 mithilfe einer Verknüpfungstabelle?

Wie modelliert man Viele-zu-Viele-Beziehungen mit zusätzlichen Werten in Lehre 2 mithilfe einer Verknüpfungstabelle?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-24 19:37:02742Durchsuche

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

Lehre 2 und Viele-zu-viele-Link-Tabelle mit einem zusätzlichen Feld

Verstehen von Viele-zu-viele-Beziehungen mit zusätzlichen Werten

In a Beim relationalen Datenbankmodell stellt eine Viele-zu-Viele-Beziehung ein Szenario dar, in dem mehrere Zeilen aus einer Tabelle mit mehreren Zeilen aus einer anderen Tabelle verknüpft werden können. Wenn jedoch zusätzliche Werte in diese Beziehung eingeführt werden, verwandelt sie sich in eine neue Einheit. Diese Entität verfügt über einen Bezeichner (die beiden Beziehungen zu den verbundenen Entitäten) und zusätzliche Daten.

Modellierung von Viele-zu-Viele-Beziehungen mit zusätzlichen Werten in Lehre 2

Um Viele-zu-Viele-Beziehungen effektiv zu modellieren Wenn Sie in Doktrin 2 viele Beziehungen mit zusätzlichen Werten haben, sollten Sie erwägen, eine separate Tabelle zur Darstellung der Beziehung zu erstellen. Diese Tabelle, die üblicherweise als „Link-Tabelle“ bezeichnet wird, enthält die notwendigen Spalten, um Beziehungen zu beiden übergeordneten Tabellen herzustellen, sowie alle zusätzlichen Attribute, die mit der Beziehung verknüpft sind.

Zuordnung der Link-Tabelle Entität in Doktrin 2

Im Kontext von Doktrin 2 können Sie diese Verknüpfungstabelle als neue Entität zuordnen. Nehmen wir ein Beispielszenario mit Produkten und Geschäften:

Produktentität:

<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>

Geschäftsentität:

<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>

Aktiengesellschaft:

<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>

Das obige ist der detaillierte Inhalt vonWie modelliert man Viele-zu-Viele-Beziehungen mit zusätzlichen Werten in Lehre 2 mithilfe einer Verknüpfungstabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn