php - Need help understanding Doctrine one to many -


संदर्भित

  वर्ग उपयोगकर्ता {// ... / ** * @ManyToMany ( targetEntity = "PhoneNumber") * @JoinTable (नाम = "users_phonenumbers", * joinColumns = {@ JoinColumn (नाम = "user_id", referencedColumnName = "आईडी")}, * inverseJoinColumns = {@ JoinColumn (नाम = "phonenumber_id", ReferencedColumnName = "id", अद्वितीय = सच}} *) * / निजी $ फोन कॉलर; // ...}  

जिस भाग को मुझे समझ में नहीं आया वह है अनोखा = सच । यह क्या करता है? मैंने पढ़ा है जिस तरह से यह PhoneNumber के साथ कई रिश्ते के लिए कई है ...

  • उपयोगकर्ता है
  • यह तालिका users_phonenumbers
  • <कोड> users_phonenumbers.user_id = users.id
  • users_phonenumbers.phonenumber_id = Phonenumber.id
  • और मुझे लगता है कि अनन्य किसी भी तरह से किसी एक को कई से कई संबंधों के लिए बाध्य करने के लिए कुछ करता है लेकिन आप इसे कैसे समझा सकते हैं? इसके अलावा एसक्यूएल अर्थ में (आउटपुट कैसा है)?

मैपिंग में अनुवाद निम्नलिखित एसक्यूएल तालिकाओं (दोनों को संभालने वाला आईडी, आईडी कहा जाता है) मानते हैं:

  बनाओ टेबल उपयोगकर्ता (आईडी INT (10) प्राथमिक कुंजी) टेबल फोन नंबर बनाएं (आईडी INT (10) प्राथमिक कुंजी) टेबल User_Phonenumber बनाएँ (user_id INT (10), phonenumber_id INT (10), प्राथमिक कुंजी (user_id, phonenumber_id), अद्वितीय (phonenumber_id));  

क्या यह आपके कोड के संदर्भ में अर्थ है:

  $ फ़ोननंबर = नए PhoneNumber (); $ Phonenumber- & gt; setNumber ( "123-4,567,890"); $ User1- & gt; addPhonenumber ($ फ़ोननंबर); $ User2- & gt; addPhonenumber ($ फ़ोननंबर); $ EntityManager- & gt; फ्लश ();  

यह एक अद्वितीय बाधा अपवाद फेंक देगा, आप अलग-अलग उपयोगकर्ताओं को एक ही फोननंबर नहीं जोड़ सकते हैं, क्योंकि फोननबोन अद्वितीय हैं (डेटाबेस स्तर पर)।


Comments