यदि आपके पास सिद्धांत में एसोसिएशन मैप किए गए इकाइयों का एक सेट है, तो कभी-कभी आप उन इकाइयों को पुनर्प्राप्त करना चाहेंगे, बिना मैप किए गए एसोसिएशन को क्वेरी और धीमा कर दिया जाए।सिद्धांतों में उनके एसोसिएशन मैपिंग के बिना इकाइयों को कैसे लाया जाए
उदाहरण के लिए मेरे पास इकाइयों का एक समूह है जो संबद्ध डेटाबेस तालिकाओं की एक श्रृंखला में मैप किए गए एसोसिएशन हैं। वे सभी OnetoMany संगठन हैं और उत्पाद पृष्ठों पर matrices में कीमतों के पदानुक्रम के रूप में कार्य करते हैं। वे के रूप में इतना प्रतिनिधित्व किया जा सकता है:
SitePage->SiteMatrix->SiteItems->SiteItemPrices.
जुड़े मानचित्रण पूरी तरह से काम करता है, और जब मैं findBy विधि का उपयोग पाने के लिए जड़ वस्तु SitePage यह सरणियों जो श्रृंखला नीचे मैप की संस्थाओं का प्रतिनिधित्व करते हैं। दूसरे शब्दों में SitePage ऑब्जेक्ट में सभी matrices शामिल हैं, जिसमें सभी आइटम शामिल हैं जिनमें सभी कीमतें हैं। अब तक सब ठीक है।
मेरी समस्या यह है कि हर बार जब मैं अपनी साइट पर पृष्ठों की एक सूची प्राप्त करता हूं, तो सिद्धांत पूरे एसोसिएशन मैपिंग पेड़ पर चल रहा है और मुझे पूरे डाटाबेस के साथ लौट रहा है जो बहुत धीमा है। कभी-कभी मैं आईडी द्वारा अपनी साइटपेज इकाई प्राप्त करना चाहता हूं और सभी मैप किए गए संघों को शामिल नहीं करना चाहता हूं।
मैं संघों के आलसी और अतिरिक्त आलसी लोड हो रहा है में देखा है, लेकिन वे केवल कुछ कार्यों को प्रभावित है, और नहीं findBy आदि आधिकारिक दस्तावेज सहायक से दूर है लगते हैं: http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/tutorials/extra-lazy-associations.html
स्टैक ओवरफ़्लो पर अन्य समान प्रश्न हैं अनुत्तरित नहीं गए: Doctrine 2 Association Mapping Overhead?
क्या मैप किए गए संघों के बिना एक इकाई लाने का कोई आसान तरीका है? वर्तमान में मैं देख सकता हूं कि सबसे आसान तरीका प्रत्येक डेटाबेस तालिका के लिए दो इकाइयां बनाना है, एक एसोसिएशन मैपिंग के साथ और एक अलग परिस्थितियों में उपयोग के बिना बिना किसी आवश्यकता के। यह मेरे लिए अजीब लगता है कि आप केवल एक इकाई नहीं ला सकते हैं और निर्दिष्ट कर सकते हैं कि आप इसे अन्य संस्थाओं से जोड़ना चाहते हैं या इसे स्वयं ही प्राप्त करना चाहते हैं।
विषय पर किसी भी जानकारी के लिए धन्यवाद।
सिद्धांत डिफ़ॉल्ट रूप से आलसी लोड एसोसिएशन होना चाहिए। ऐसा लगता है जैसे आपके सभी संगठन उत्सुक लोडिंग के लिए सेट हैं। क्या आप किसी भी एसोसिएशन समस्याओं को रद्द करने के लिए अपने एसोसिएशन मैपिंग के साथ दो इकाइयों के लिए कोड जोड़ सकते हैं? – JimL
आपकी प्रतिक्रिया के लिए धन्यवाद, लेकिन यह समस्या अब एक वर्ष से अधिक पुरानी है। यह पता चला कि मैं अपनी इकाइयों को सरणी में क्रमबद्ध करने के लिए एक धारावाहिक का उपयोग कर रहा था, और यह यह धारावाहिक था जो प्रत्येक गेटर समारोह को एसोसिएशन मैपिंग पेड़ के नीचे बुला रहा था। एक बार जब मैंने जेएमएस सीरिएलाइज़र बंडल के भीतर बहिष्कार, अधिकतम गहराई और समूह की कार्यक्षमता के बारे में सीखा, तो यह सब स्पष्ट हो गया और मैं अधिक नियंत्रण के साथ सहयोग को चलाने में सक्षम था। – Asq