2011-12-02 6 views
5

मैं एक एक-से-एक यूनिडायरेक्शनल रिश्ते के साथ दो संस्थाओं है हटाना :सिद्धांत 2 एक-से-एक यूनिडायरेक्शनल संबंध गैर मालिक पक्ष

Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails

बार इकाइयों को हटाने की क्षमता को खोए बिना मैं एक unidirectional संबंध कैसे रखूं?

उत्तर

5
सिद्धांत 2 के साथ

(शून्य जब यू बार हटाने के लिए इस सेट हो जाएगा स्तंभ), यह क्या है आपको बस इतना करना:

class Foo { 
    ... 
    /** 
    * @OneToOne(targetEntity="Bar") 
    * @JoinColumn(name="bar_id", referencedColumnName="id", onDelete="CASCADE") 
    */ 
    private $bar; 
    ... 
} 

class Bar { 
    ... 
} 

onDelete = "कास्केड" क्या कैपी अपने जवाब (सेटअप हटाने झरना पर अपने विदेशी कुंजी) में कहा करेंगे। इस तरह, जब आप अपनी बार इकाई को हटाते हैं तो संबंधित फू इकाई भी हटा दी जाएगी।

यदि आप अपनी फू इकाई को नहीं हटाना चाहते हैं तो आप ऑनडिले = "सेट न्यूल" के साथ बस डेले = "कैस्केड" को प्रतिस्थापित कर सकते हैं।

2

आप Orphan Removal का उपयोग कर सकते हैं। यह one-to-one, one-to-many और many-to-many एसोसिएशन के साथ काम करता है।

@OneToOne(targetEntity="Bar", orphanRemoval=true) 

आशा इस किसी की मदद कर सकते हैं:

तुम बस orphanRemoval=true विकल्प इस तरह जोड़ने के लिए।

संबंधित मुद्दे