Heim > Datenbank > MySQL-Tutorial > Wie modelliert man Viele-zu-Viele-Beziehungen mit zusätzlichen Feldern in Lehre 2?

Wie modelliert man Viele-zu-Viele-Beziehungen mit zusätzlichen Feldern in Lehre 2?

Linda Hamilton
Freigeben: 2024-11-25 11:57:14
Original
240 Leute haben es durchsucht

How to Model Many-to-Many Relationships with Extra Fields in Doctrine 2?

Many-to-Many-Link-Tabelle mit einem zusätzlichen Feld: Eine ausführliche Erklärung

Einführung:

Many -zu-viele-Beziehungen beinhalten oft zusätzliche Felder, die zusätzliche Informationen speziell für jede Beziehungsinstanz bereitstellen. Der Umgang mit solchen Beziehungen in Lehre 2 kann jedoch etwas schwierig sein. In diesem Artikel soll erläutert werden, wie diese Beziehungen effektiv modelliert werden können.

Das Problem:

Der Benutzer hat versucht, ein Datenbankmodell mit einer Viele-zu-Viele-Beziehung zu erstellen ein zusätzliches Feld für die Lagerhaltung enthalten. Allerdings stießen sie auf Probleme, als sie versuchten, mit dem Schema-Tool von Doctrine auf den Bestandswert zuzugreifen und die Datenbanktabellen zu generieren.

Die Lösung:

Viele verstehen -zu-viele-Beziehungen mit zusätzlichen Feldern

Eine viele-zu-viele-Beziehung mit zusätzlichen Feldern ist im Wesentlichen eine neue Entität an sich, da sie nun über einen Bezeichner (die Beziehungen zu den verbundenen Entitäten) und Werte verfügt. Daher reicht es nicht aus, sie als Verknüpfungstabelle ohne Werte zu modellieren.

Separate Entitäten für Beziehungen mit zusätzlichen Feldern erstellen

Der empfohlene Ansatz besteht darin, eine separate Entität zu erstellen , wie in diesem Fall „Stock“, das die Beziehung darstellt und das zusätzliche Feld enthält. Diese Entität stellt Beziehungen zu beiden beteiligten Entitäten her, und jede Beziehung wird durch einen Fremdschlüssel in der Entität „Stock“ dargestellt.

Codebeispiele:

Hier ist ein Beispiel wie die Entitäten in den Anmerkungen zu Lehre 2 definiert werden könnten:

// Product Entity
@ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="product")
protected $stockProducts;

// Store Entity
@ORM\OneToMany(targetEntity="Entity\Stock", mappedBy="store")
protected $stockProducts;

// Stock Entity
@ORM\Id()
@ORM\ManyToOne(targetEntity="Entity\Store", inversedBy="stockProducts")
protected $store;

@ORM\Id()
@ORM\ManyToOne(targetEntity="Entity\Product", inversedBy="stockProducts")
protected $product;
Nach dem Login kopieren

Zusätzlich Überlegungen:

  • Erwägen Sie, eine der Beziehungen unidirektional zu machen, um selbstreferenzielle Abfragen zu vermeiden (Standard ist bidirektional).
  • Stellen Sie sicher, dass das Datenbankschema dem Objektmodell entspricht.

Das obige ist der detaillierte Inhalt vonWie modelliert man Viele-zu-Viele-Beziehungen mit zusätzlichen Feldern 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage