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