Desidero verificare la mia comprensione delle operazioni in cascata sulle associazioni di Doctrine. Ai fini di questa domanda, ho due modelli: Customer
e Insuree
.Informazioni su Doctrine Cascade Operations
Se io definisco una relazione molti a molti relazione tra un Customer
e Insuree
e impostare cascade{"all"}
, capisco che questa volontà:
- Aggiunta di un nuovo all'assicurato a un cliente persisterà questa dell'assicurato e creare un'associazione in unisciti alla tabella
- La rimozione di un certificato dalla raccolta separerà l'assicurato dal cliente e separerà il cliente dall'assicurato.
- L'eliminazione del cliente eliminerà tutti gli assicurati associati al cliente.
Questa è la definizione dell'associazione su 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;
Se io definisco l'inverso molti a molti relazione tra un Insuree
e Customer
e impostare cascade{"all"}
, capisco che questa volontà:
- L'aggiunta di un nuovo cliente per un all'assicurato persisterà questo cliente e creare un'associazione nella tabella di join.
- La rimozione di un cliente dalla raccolta scollegherà il cliente dall'assicurato e separerà l'assicurato dal cliente.
- Eliminando l'assicurato verranno eliminati tutti i clienti associati.
Questa è la definizione dell'associazione su Insurees
.
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"all"})
*/
protected $customers;
Se dunque io definisco il rapporto come a cascata sul persistere, si fondono e staccare - eliminando l'assicurato non cancellerà tutti i clienti associati - sarà solo rimuovere le associazioni tra l'assicurato ei suoi clienti?
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"persist", "merge", "detach"})
*/
protected $customers;
Non riesci a controllare se la tua comprensione delle relazioni a cascata è corretta creando alcuni '' Clienti' e 'Insuree's e inizia a cancellare/aggiungere record? – undefined