Ich möchte mein Verständnis von Kaskadenoperationen in Doctrine-Zuordnungen überprüfen. Für den Zweck dieser Frage habe ich zwei Modelle: Customer
und Insuree
.Verständnis von Cascade-Operationen in Doctrine
Wenn ich viele zu viele Beziehung zwischen einem Customer
und Insuree
und setzen cascade{"all"}
definieren, ich verstehe, dass dies:
- ein neues Versicherungsnehmers an einen Kunden hinzufügen, wird dieses Versicherungsnehmers bestehen bleiben und eine Zuordnung in der erstellen Tabelle beitreten.
- Das Entfernen eines Versicherten aus der Sammlung löst den Versicherten vom Kunden ab und trennt den Kunden vom Versicherten.
- Durch das Löschen des Kunden werden alle mit dem Kunden verbundenen Versicherten gelöscht.
Dies ist die Definition der Assoziation 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 inverse viele zu viele Beziehung zwischen einem Insuree
und Customer
und setzen cascade{"all"}
definieren, ich verstehe, dass dies:
- einen neuen Kunden zu einem Versicherungsnehmers Hinzufügen wird diesen Kunden bestehen bleiben und erstellen eine Verknüpfung in der Join-Tabelle.
- Das Entfernen eines Kunden aus der Sammlung löst den Kunden vom Versicherten und trennt den Versicherten vom Kunden.
- Durch das Löschen des Versicherten werden alle damit verbundenen Kunden gelöscht.
Dies ist die Definition der Assoziation auf Insurees
.
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"all"})
*/
protected $customers;
Wenn ich die Beziehung dann definieren, wie beharren Kaskade auf, verschmelzen und trennen - der Versicherte das Löschen aller zugehörigen Kunden nicht löschen - es wird die Verbindungen zwischen den Versicherten und ihren Kunden nur entfernen?
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"persist", "merge", "detach"})
*/
protected $customers;
Können Sie nicht überprüfen, ob Ihr Verständnis der Kaskadierungsbeziehungen korrekt ist, indem Sie einige "Kunden" und "Versicherer" erstellen und mit dem Löschen/Hinzufügen von Datensätzen beginnen? – undefined