मैं सिद्धांत संघों पर कैस्केड संचालन की अपनी समझ की जांच करना चाहता हूं। इस प्रश्न के प्रयोजन के लिए, मेरे पास दो मॉडल हैं: Customer
और Insuree
।सिद्धांत कैस्केड संचालन को समझना
मैं एक Customer
और Insuree
और cascade{"all"}
सेट के बीच कई रिश्ते के लिए कई परिभाषित है, मैं समझता हूँ कि इस होगा:
- एक ग्राहक के लिए एक नया insuree जोड़ने से इस insuree जारी रहती है और में एक संघ का निर्माण करेगा टेबल में शामिल हों
- संग्रह से बीमाकर्ता को हटाने से ग्राहक से बीमा को अलग कर दिया जाएगा और ग्राहक को बीमाकर्ता से अलग कर दिया जाएगा।
- ग्राहक को हटाने से ग्राहक से जुड़े सभी बीमाकर्ता हटा दिए जाएंगे।
यह 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
और Customer
और cascade{"all"}
सेट के बीच कई संबंध बनाने के लिए कई परिभाषित करते हैं, मैं समझता हूँ कि यह होगा:
- एक insuree के लिए एक नया ग्राहक जोड़ने से इस ग्राहक जारी रहती है और पैदा करेगा जॉइन टेबल में एक एसोसिएशन।
- संग्रह से किसी ग्राहक को निकालने से ग्राहक को बीमाकर्ता से अलग कर दिया जाएगा और ग्राहक से बीमा को अलग कर दिया जाएगा।
- बीमाकर्ता को हटाने से जुड़े सभी ग्राहकों को हटा दिया जाएगा।
यह Insurees
पर एसोसिएशन की परिभाषा है।
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"all"})
*/
protected $customers;
मैं तो पर झरना जारी रहती है, विलय और अलग करने के रूप में संबंधों को परिभाषित है - insuree सभी संबद्ध ग्राहकों नहीं हटेंगे - यह केवल insuree और अपने ग्राहकों के बीच संघों को हटा देगा?
/**
* @ORM\ManyToMany(targetEntity="Customer", mappedBy="insurees", cascade={"persist", "merge", "detach"})
*/
protected $customers;
क्या आप जांच नहीं सकते कि कैस्केडिंग रिश्तों की आपकी समझ कुछ 'ग्राहक और' बीमाकर्ता 'बनाकर सही है और रिकॉर्ड हटाने/जोड़ने शुरू कर रही है? – undefined