Ich möchte mein Verständnis von Kaskadenoperationen auf Doktrinassoziationen überprüfen. Für diese Frage habe ich zwei Modelle: Customer
und Insuree
.
Wenn ich eine Viele-zu-Viele-Beziehung zwischen einem Customer
und Insuree
und einer Menge definiere cascade{"all"}
, verstehe ich, dass dies:
- Durch Hinzufügen eines neuen Versicherten zu einem Kunden bleibt dieser Versicherte bestehen und es wird eine Zuordnung in der Join-Tabelle erstellt.
- 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 des Vereins auf Customers
.
/**
* @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 umgekehrte Viele-zu-Viele-Beziehung zwischen einem Insuree
und Customer
und einer Menge definiere cascade{"all"}
, verstehe ich, dass dies:
- Durch Hinzufügen eines neuen Kunden zu einem Versicherten bleibt dieser Kunde bestehen und es wird eine Zuordnung in der Join-Tabelle 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 damit verbundenen Kunden gelöscht.
Dies ist die Definition des Vereins auf Insurees
.
/**
* @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 - das Löschen des Versicherten löscht nicht alle zugeordneten Kunden - werden nur die Assoziationen zwischen dem Versicherten und seinen Kunden entfernt?
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"persist", "merge", "detach"})
*/
protected $customers;
Customer
s undInsuree
s erstellen und mit dem Löschen / Hinzufügen von Datensätzen beginnen?