2012-07-13 13 views
16

मुझे आश्चर्य है कि अलग-अलग डेटाबेस में रहने वाली दो इकाइयों के बीच संबंध बनाना संभव है या नहीं।एकाधिक इकाई प्रबंधन के साथ संबंधों का उपयोग

उदाहरण के लिए यदि हमने http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html पर समाधान प्राप्त किया है और ग्राहक डेटाबेस में उपयोगकर्ताओं के साथ कई रिश्तों को डिफ़ॉल्ट डेटाबेस में पोस्ट करने के लिए बनाया है।

क्या यह ऐसा कुछ है जो Symfony2 और Doctrine द्वारा समर्थित है?

उत्तर

25

विभिन्न ऑब्जेक्ट मैनेजर्स (इकाई प्रबंधक) का उपयोग करने से ऑब्जेक्ट ग्राफ़ को छेड़छाड़ करने की अनुमति नहीं मिलती है। वह मामला बहुत जटिल है और इसे डॉक्टर ओआरएम द्वारा प्रबंधित नहीं किया जाता है।

यदि आपको ऐसा कोई मामला चाहिए, तो ऑब्जेक्ट ग्राफ़ को उनके संदर्भ के बजाय संबंधित ऑब्जेक्ट्स (पुरानी शैली) के पहचानकर्ताओं को सहेजकर डिस्कनेक्ट किया जाए, फिर मैन्युअल रूप से सेवाओं के माध्यम से ऑब्जेक्ट प्राप्त करें। आप example of connection between Doctrine2 ORM and Doctrine2 MongoDB ODM में कैसे काम करेंगे इसका एक अच्छा उदाहरण पा सकते हैं। वैकल्पिक रूप से, आप @PostLoad ईवेंट श्रोता का भी उपयोग कर सकते हैं जो उदाहरण में लिंक किए गए भंडारों के माध्यम से लिंक बनाकर आपकी संस्थाओं में डेटा पॉप्युलेट करता है। @PostPersist के लिए वही (जो संबंधित वस्तुओं के लिए पहचानकर्ताओं को निकालने के बजाय), लेकिन सावधान रहें कि यह तकनीक वास्तव में गन्दा हो सकती है।

इसके अलावा, यदि आपका आरडीबीएमएस एक मेजबान पर क्रॉस-डेटाबेस ऑपरेशंस का समर्थन करता है, तो आप केवल एक एंटीटी मैनेजर का उपयोग कर सकते हैं और अन्य तालिका को @ORM\Table(name="schemaname.tablename") के साथ संदर्भित कर सकते हैं।

+6

* यदि आपका आरडीबीएमएस एक मेजबान पर क्रॉस-डेटाबेस ऑपरेशंस का समर्थन करता है, तो आप केवल एक एंटीटी मैनेजर का उपयोग कर सकते हैं और अन्य तालिका * का संदर्भ दे सकते हैं। उत्कृष्ट सलाह। धन्यवाद! – noisebleed

+2

पता चला कि केवल एक इकाई प्रबंधक और एकाधिक डेटाबेस का उपयोग करते समय, सिद्धांत केवल 'default_connection' तालिकाओं में स्कीमा परिवर्तनों का पता लगाता है। यह काम करने के लिए कोई विचार है? – noisebleed

+1

@ दस्तावेज़ों से नोइसेबल: $ php ऐप/कंसोल सिद्धांत: स्कीमा: अद्यतन --force --em = ग्राहक। यहां और पढ़ें: http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html – apfz