我想检查一下我对Doctrine关联的级联运算的理解。出于这个问题的目的,我有两个模型:Customer
和Insuree
。
如果我在Customer
和之间Insuree
设置了多对多关系cascade{"all"}
,则可以理解:
- 向客户添加新的被保险人将保留该被保险人,并在联接表中创建关联。
- 从集合中删除被保险人将使保险人与客户分离,并使客户与被保险人分离。
- 删除客户将删除与该客户关联的所有保险。
这是上的关联的定义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;
如果我定义了Insuree
andCustomer
和set之间的逆多对多关系cascade{"all"}
,则可以理解:
- 向被保险人添加新客户将保留该客户并在联接表中创建关联。
- 从集合中删除客户将使客户与被保险人分离,并将客户与被保险人分离。
- 删除被保险人将删除与其关联的所有客户。
这是上的关联的定义Insurees
。
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"all"})
*/
protected $customers;
如果然后我定义持久化,合并和分离的关系-删除被保险人将不会删除所有关联的客户-只会删除被保险人与其客户之间的关联?
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"persist", "merge", "detach"})
*/
protected $customers;
Customer
s和Insuree
s并开始删除/添加记录来检查您对级联关系的理解是否正确?