Heim > Datenbank > MySQL-Tutorial > Wie implementiert man eine Viele-zu-Viele-Beziehung mit einem zusätzlichen Feld in Lehre 2?

Wie implementiert man eine Viele-zu-Viele-Beziehung mit einem zusätzlichen Feld in Lehre 2?

DDD
Freigeben: 2024-11-30 07:57:12
Original
302 Leute haben es durchsucht

How to Implement a Many-to-Many Relationship with an Extra Field in Doctrine 2?

Many-to-Many-Link-Tabelle mit einem zusätzlichen Feld in Lehre 2

Einführung
Datenbankmodellierung beinhaltet oft die Schaffung von Viele-zu-Viele-Beziehungen. In Fällen, in denen für jede Beziehung zusätzliche Informationen gespeichert werden müssen, sind herkömmliche Viele-zu-Viele-Tabellen nicht mehr ausreichend. In diesem Artikel wird die Erstellung solcher Beziehungen mithilfe von Doktrin 2 untersucht, wobei der Verknüpfungstabelle ein zusätzliches Feld hinzugefügt wird.

Herausforderungen
Zunächst wird versucht, eine Viele-zu-Viele-Beziehung zu erstellen Ein zusätzliches Feld führte zu einer Verknüpfungstabelle ohne die gewünschten Werte. Nachfolgende Versuche, das Datenbanklayout umzustrukturieren, um eine separate „Lager“-Tabelle mit Beziehungen zu „Produkt“- und „Store“-Entitäten einzuschließen, erwiesen sich ebenfalls als erfolglos.

Lösung
Der Schlüssel zur Lösung Dieses Problem liegt im Verständnis, dass eine Viele-zu-Viele-Assoziation mit zusätzlichen Werten zu einer eigenständigen Einheit wird. Im Kontext dieses Beispiels stellt die Tabelle „Stock“ mit ihrem Feld „Betrag“ eine separate Entität dar, die keine reine Viele-zu-Viele-Beziehung mehr darstellt.

Entitätsmodell
Basierend auf diesem Verständnis ist das folgende Entitätsmodell vorgeschlagen:

  • Produkt:

    • Enthält Produktinformationen, einschließlich Name und Lagerbestand Lagerbestand.
  • Shop:

    • Ähnlich wie Produkt, speichert jedoch Geschäftsinformationen und Lagerbestände Lagerbestand.
  • Lagerbestand:

    • Stellt die Beziehung zwischen Produkt und Shop dar, einschließlich des Felds „Menge“.

Mapping mit der Lehre 2
Die entsprechende Doctrine 2-Zuordnung für die Entitäten würde wie folgt aussehen:

// 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;
}
Nach dem Login kopieren

Wenn Sie diesem Ansatz folgen, können Sie mithilfe von Doctrine 2 komplexe Datenbankbeziehungen mit zusätzlichen Feldern erstellen und so eine größere Flexibilität bieten in der Datenmodellierung.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine Viele-zu-Viele-Beziehung mit einem zusätzlichen Feld in Lehre 2?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage