2010-12-14 44 views
19

मेरे पास दो टेबल और एक जॉइन टेबल है: 'कर्मचारी', 'वर्गीकरण' और 'staff_classification'। जॉइन टेबल में मुझे एक अतिरिक्त बूलियन फ़ील्ड मिला है: 'शोक्सासिफिकेशन'।सिद्धांत 2 तालिका में शामिल हों + अतिरिक्त फ़ील्ड्स

/** 
* @ManyToMany(targetEntity="Staff", inversedBy="classifications") 
* @JoinTable(name="staff_classifications", 
* joinColumns={@JoinColumn(name="staffid", referencedColumnName="id")}, 
* inverseJoinColumns={@JoinColumn(name="classificationid", referencedColumnName="id", unique=true)}); 
*/ 
  1. मैं कैसे तालिका में शामिल होने के अतिरिक्त क्षेत्र 'showclassifications' में शामिल कर सकता: मेरी टिप्पणी इस प्रकार है?
  2. मैं डीक्यूएल के माध्यम से फ़ील्ड को कैसे संदर्भित करूं? जैसे एक कर्मचारी के सभी वर्गीकरणों को कौन सी क्वेरी दिखाई देगी, जिन्हें दिखाने की अनुमति है?
  3. क्या मैं उपरोक्त एनोटेशन को एक कक्षा में और @ManyToMany एनोटेशन को दूसरे में @ joinTable के साथ रखता हूं? जैसे @ManyToMany (targetEntity = "वर्गीकरण")?
+0

यहां आप इस मामले में अनुसरण करने के दृष्टिकोण के बारे में एक महान लेख प्राप्त कर सकते हैं: http://future500.nl/articles/2013/09/doctrine-2-how-to-handle-join-tables-with-extra -columns/ –

उत्तर

32

आप एक ऐसी इकाई चाहते हैं जो रिलेशनशिप (स्टाफ क्लासिफिकेशन) का वर्णन करे, जिसमें कर्मचारियों और वर्गीकरण दोनों के साथ एक से अधिक संबंध हैं।

ManyToMany आपको "अतिरिक्त" गुणों की अनुमति नहीं देता है, क्योंकि जॉइन टेबल एक इकाई नहीं है, और इस प्रकार कोई गुण नहीं हो सकता है।

+3

+1 यह चीजों को करने के लिए तार्किक ओओ तरीका है। यह सटीक प्रश्न मेलिंग सूची पर बहुत कुछ पूछता है, और यह सिद्धांत सिद्धांत भी बताता है। –

+0

कमाल। धन्यवाद, मैं उस पैटर्न का पालन करूंगा और देख सकता हूं कि मैं कैसे जाता हूं। चीयर्स। – waigani

+1

ओओ पैटर्न का उपयोग, उपरोक्त प्रश्न 2 का उत्तर क्या है? डीक्यूएल कैसा दिखता है? – waigani