Beziehungskonfiguration der Lehre

Beziehungskonfiguration der Lehre
Vereinigungskonfiguration

Anstatt mit Fremdschlüsseln zu arbeiten, arbeitet Doktrin immer mit Referenzen und konvertiert diese Referenzen in Fremdschlüssel.
Es gibt einige Punkte, die Sie verstehen müssen:
- Ein Verweis auf ein einzelnes Objekt wird durch einen Fremdschlüssel dargestellt.
- Eine Sammlung von Objekten wird durch viele Fremdschlüssel dargestellt, die auf das Objekt hinweisen, das die Sammlung enthält
- Ist die Referenz des Objekts an die Entität eine bidirektionale Konfiguration
- Wenn das Unternehmen nur auf die Entität verweist, ist es eine unidirektionale Konfiguration

KONFIGURATIONSTYPEN

  • ManyToOne -Mehrere für eine: Viele Beispiele der aktuellen Entität beziehen sich auf eine Instanz der referierten Entität.
  • Eins für eine: - Eine Instanz der aktuellen Entität bezieht sich auf eine Instanz der referenzierten Entität.
  • Eine für mehrere: - Eine Instanz der aktuellen Entität enthält viele Instanzen (Referenzen) an die referenzierte Entität.

Mehrere für einen

-Eine Multiple-to-One-Assoziation ist die häufigste Assoziation zwischen Objekten.
-in der Doktrin-Konfiguration eine Annotation in PHP wie im folgenden Beispiel erstellen
-Eine Multiple-to-One-Assoziation ist die häufigste Assoziation zwischen Objekten.
-in der Doktrin-Konfiguration eine Annotation in PHP wie unten erstellen

<?php
/** @Entity */
class User
{
    /**
    * Viele Benutzer haben eine Adresse.
    * @ManyToOne(targetEntity="Address")
    * @JoinColumn(name="address_id", referencedColumnName="id")
    */
    private $address;
}

/** @Entity */
class Address
{
    // ...
}

Eins für eins

- Hier ist eine individuelle Beziehung zwischen einem Client und einem Browser.
- Der Browser hat einen Verweis auf den Client, also ist es bidirektional.

<?php
/** @Entity */
class Customer
{
    // ...
    /**
    * Ein Kunde hat einen Wagen.
    * @OneToOne(targetEntity="Cart", mappedBy="customer")
    */
    private $cart;
    // ...
}

/** @Entity */
class Cart
{
    // ...
    /**
    * Ein Kunde hat einen Wagen.
    * @OneToOne(targetEntity="Customer", inversedBy="cart")
    * @JoinColumn(name="customer_id", referencedColumnName="id")
    */
    private $customer;
    // ...
}

Eine für mehrere

Eine Assoziation von einem für mehrere muss bidirektional sein, es sei denn, Sie verwenden eine zusätzliche Anhangtabelle.
Wegen des Fremdschlüssels in einer Eins-zu-Viele-Vereinigung ist es notwendig, dass es an "mehreren" Orten definiert wird
Doktrin braucht eine Multi-to-One-Assoziation, die die Konfiguration dieses Fremdschlüssels definiert.

<?php

use DoctrineCommonCollectionsArrayCollection;

/** @Entity */
class Product
{
    // ...
    /**
    *Ein Produkt hat viele Eigenschaften.
    * @OneToMany(targetEntity="Feature", mappedBy="product")
    */
    private $features;
    // ...
    public function __construct() {
         $this->features = new ArrayCollection();
    }
}

/** @Entity */
class Feature
{
    // ...
    /**
    * Viele Features haben ein Produkt.
    * @ManyToOne(targetEntity="Product", inversedBy="features")
    * @JoinColumn(name="product_id", referencedColumnName="id")
    */
    private $product;
    // ...
}

Verwenden Sie diesen Link, um mehr zu erfahren: Assoziationskonfiguration