2016 में डॉक्टरेट ओआरएम का उपयोग लगभग 2 ~ 2.5 वर्षों के साथ।
निहित असंगति
SELECT i, p
FROM \Entity\Item i
JOIN i.product p
WHERE ...
मान लें संस्थाओं Item
और Product
हैं। वे Item.product_id
से Product.id
के माध्यम से जुड़े हुए हैं, और Product
में Product.model
है जो हम Item
के साथ प्रदर्शित करना चाहते हैं।
यहाँ डेटाबेस से एक ही "product.model" की बहाली है, इसके बाद के संस्करण का उपयोग कर एसक्यूएल लेकिन SQL मानकों बदलती:
//SELECT i, p
$ret[0]->getProduct()->getModel();
//SELECT i as item, p as product
$ret[0]['item']->getProduct()->getModel();
//SELECT i as item, p.model as model
$ret[0]['model'];
प्वाइंट मैं बनाने रहा हूँ यह है:
आउटपुट ResultSet संरचना को बदल सकते हैं आप अपने डीक्यूएल/ओआरएम चयन कथन लिखने के तरीके के आधार पर काफी हद तक निर्भर करते हैं।
ऑब्जेक्ट्स की सरणी से ऑब्जेक्टिव सरणी की सरणी से, एसोसिएटिव सरणी की सरणी के लिए, आप SELECT
पर निर्भर करते हैं। कल्पना करें कि आपको अपने एसक्यूएल में बदलाव करना है, फिर कल्पना करें कि अपने कोड पर वापस जाएं और परिणाम सेट से डेटा पढ़ने के साथ जुड़े सभी कोड दोबारा करें। ओच! आउच! आउच! भले ही यह कोड की कुछ पंक्तियां हों, आप परिणाम सेट की संरचना पर निर्भर करते हैं, कोई पूर्ण decoupling/सामान्य मानक नहीं है।
क्या सिद्धांत
कुछ मायनों में यह, एसक्यूएल के साथ काम कर हटाता है क्राफ्टिंग और अपनी खुद की टेबल बनाए रखने में में अच्छा है। यह सही नहीं है। कभी-कभी यह विफल हो जाता है और आपको MySQL कमांड लाइन पर जाना होगा और उस बिंदु पर चीजों को समायोजित करने के लिए एसक्यूएल टाइप करना होगा जहां सिद्धांत और आप खुश हैं, जहां सिद्धांत कॉलम प्रकार को वैध मानता है और जहां आप स्तंभ प्रकारों से खुश हैं। आपको अपनी खुद की विदेशी कुंजी या इंडेक्स को परिभाषित करने की ज़रूरत नहीं है, यह आपके लिए ऑटो-जादुई रूप से किया जाता है।
क्या सिद्धांत
पर बुरा है जब भी आप DQL/ORM के लिए किसी भी काफी उन्नत एसक्यूएल अनुवाद करने की आवश्यकता है, तो आप के लिए संघर्ष कर सकते हैं। उससे अलग, आप ऊपर की तरह असंगतताओं से भी निपट सकते हैं।
अंतिम विचार
मैं बनाने/मेरे लिए टेबल को संशोधित करने के लिए और वस्तुओं के लिए तालिका डेटा परिवर्तित करने, और उन्हें वापस बने, और तैयार बयान और अन्य नियंत्रण और संतुलन प्रयोग करने के लिए के लिए सिद्धांत से प्यार है, अपने डेटा को सुरक्षित बनाने ।
मुझे PHP के ऑब्जेक्ट उन्मुख इंटरफ़ेस के भीतर से डॉक्टर द्वारा देखभाल की लगातार देखभाल की भावना पसंद है। मुझे लगता है कि मैं अपने डेटा के हिस्से के रूप में अपने डेटा के बारे में सोच सकता हूं, और ओआरएम डाटाबेस के साथ बातचीत करने की गंदे सामान का ख्याल रखता है। डाटाबेस एक स्थानीय चर की तरह लगता है और मैंने एक प्रशंसा प्राप्त की है कि यदि आप अपने डेटा का ख्याल रखते हैं, तो यह आपको वापस प्यार करेगा।
मैं अपने असंगतता और कठिन सीखने की वक्र के लिए सिद्धांत से नफरत करता हूं, और मुझे एसक्यूएल में सामान लिखने के बारे में पता है जब डीक्यूएल के लिए मालिकाना वाक्यविन्यास देखना है। एसक्यूएल ज्ञान आसानी से उपलब्ध है, डीक्यूएल में जंगली में कई विशेषज्ञ नहीं हैं, न ही जब आप अटक जाते हैं तो आपकी सहायता के लिए ज्ञान का एक संचित निकाय (एसक्यूएल की तुलना में)।
पवित्र गाय! हजारों विचारों और दर्जनों उत्तरों के साथ एक प्राचीन, विचार-विमर्श करने वाला सवाल है कि * उत्पादक प्रश्न भीड़ द्वारा बंद नहीं किया गया है !! A ++! –