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:
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:
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;