Grundlegendes zu Doctrine Cascade-Vorgängen

Ich möchte mein Verständnis von Kaskadenoperationen in Bezug auf Doktrinenzuordnungen überprüfen. Für diese Frage habe ich zwei Modelle:Customer undInsuree.

Wenn ich ein viel zu viel Verhältnis zwischen aCustomer undInsuree und setzencascade{"all"}Ich verstehe, dass dies wird:

Wenn Sie einem Kunden einen neuen Versicherten hinzufügen, bleibt dieser Versicherte bestehen und erstellt eine Zuordnung in der Verknüpfungstabelle.Durch das Entfernen eines Versicherten aus der Sammlung wird der Versicherte vom Kunden und der Kunde vom Versicherten getrennt.Durch das Löschen des Kunden werden alle mit dem Kunden verbundenen Versicherten gelöscht.

Dies ist die Definition der Assoziation aufCustomers.

/**
 * @ORM\ManyToMany(targetEntity="Insuree", inversedBy="customers", cascade={"all"})
 * @ORM\JoinTable(name="customer_insuree",
 *      joinColumns={@ORM\JoinColumn(name="customer_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="insuree_id", referencedColumnName="id")}
 * )
 */
protected $insurees;

Wenn ich die inverse Beziehung zwischen vielen und vielen definiereInsuree undCustomer und setzencascade{"all"}Ich verstehe, dass dies wird:

Wenn Sie einem Versicherten einen neuen Kunden hinzufügen, bleibt dieser Kunde bestehen und es wird eine Zuordnung in der Verknüpfungstabelle erstellt.Durch das Entfernen eines Kunden aus der Sammlung wird der Kunde vom Versicherten und der Versicherte vom Kunden getrennt.Durch das Löschen des Versicherten werden alle mit ihm verbundenen Kunden gelöscht.

Dies ist die Definition der Assoziation aufInsurees.

/**
 * @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"all"})
 */
protected $customers;

Wenn ich dann die Beziehung so definiere, dass sie beim Fortbestehen, Zusammenführen und Trennen kaskadiert - durch das Löschen des Versicherten werden nicht alle zugeordneten Kunden gelöscht - werden nur die Verknüpfungen zwischen dem Versicherten und seinen Kunden entfernt?

/**
 * @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"persist", "merge", "detach"})
 */
protected $customers;

Antworten auf die Frage(1)

Ihre Antwort auf die Frage