2012-10-25 10 views
12

मैं Magento समझने की कोशिश कर रहा हूँ और अगर किसी को इस विषय पर मुझे किसी भी जानकारी दे सकता है मैं सोच रहा थाMagento: मॉडल, संसाधन मॉडल, और संग्रह की बुनियादी अवधारणाओं का वर्णन करें, और रिश्ते वे एक दूसरे के लिए है

मॉडल, संसाधन मॉडल, और संग्रह की बुनियादी अवधारणाओं का वर्णन करें, और संबंध वे एक दूसरे के लिए है

उत्तर

38

संसाधन मॉडल ऑब्जेक्ट होते हैं बहुत ज्यादा कोड जो डेटास्टोर से डेटा प्राप्त करता है। अभ्यास में, इसका मतलब है एक संसाधन मॉडल वस्तु जो एसक्यूएल निर्माण और प्राप्त कर रहा है कोड है, साथ ही वस्तुओं के लिए संदर्भ जो मुख्य Magento डेटाबेस से कनेक्ट करता है शामिल हैं।

मॉडल वे ऑब्जेक्ट्स हैं जिनमें डेटा के "प्रकार" के साथ बातचीत करने के लिए डेटाबेस अज्ञेय कोड शामिल हैं। पारंपरिक डेटा मॉडलिंग संदर्भ में अपने मॉडल वस्तुओं वस्तु (जिसका अर्थ है उत्पाद, ग्राहक वस्तु की तरह, आदि) की एक विशेष प्रकार के लिए व्यापार तर्क होते हैं।

महत्वपूर्ण: उपर्युक्त परिभाषा के अतिरिक्त, Magento कोड के कुछ हिस्सों में सामान्य मॉडल के रूप में "मॉडल" का उपयोग होता है जिसमें डेटा तर्क से संबंधित व्यापार तर्क शामिल होता है। इन "मॉडल" को सादे पुरानी वस्तुओं के रूप में सोचा जाना चाहिए, बस Magento कारखाने पैटर्न के माध्यम से तत्काल। मॉडल जो बाद में कर रहे हैं नहीं है - मॉडल है कि Mage_Core_Model_Abstract से विरासत पूर्व कर रहे हैं। यह पोस्ट मानता है कि "मॉडल" पूर्व को संदर्भित करता है। मैंने इन्हें Magento के CRUD models के रूप में संदर्भित करना भी शुरू कर दिया है।

एक संग्रह एक ऑब्जेक्ट है जिसमें कोड होता है जो मॉडल ऑब्जेक्ट्स का समूह (संग्रह, सरणी, सूची इत्यादि) प्राप्त करता है। चूंकि यह ऐसा करने के लिए एसक्यूएल उत्पन्न करता है, इसे संसाधन मॉडल भी माना जाता है और Mage::getResourceModel विधि के साथ तत्काल किया जाता है, (हालांकि संग्रह वस्तुओं को सामान्य संसाधन मॉडल की तुलना में कक्षाओं की एक अलग श्रृंखला से प्राप्त होता है। ये वे डिज़ाइन पैटर्न नहीं हैं जिन्हें आप ढूंढ रहे हैं) । संग्रह वस्तुओं भी कुछ मानक PHP इंटरफेस को लागू है, और उनके परिणामों पर पुनरावृति करने के लिए foreach छोरों में इस्तेमाल किया जा सकता है।

एक Magento मॉडल ऑब्जेक्ट में संसाधन मॉडल का संदर्भ होता है, जिसका उपयोग अपने डेटा को लोड करने के लिए किया जाता है। प्रत्येक मॉडल ऑब्जेक्ट के लिए एक व्यक्तिगत संसाधन मॉडल ऑब्जेक्ट है। यानी एक उत्पाद मॉडल में एक उत्पाद संसाधन मॉडल है।

एक संग्रह वस्तु को तुरंत चालू करने के लिए एक Magento मॉडल ऑब्जेक्ट का भी उपयोग किया जा सकता है। संग्रह वस्तुओं को उनके मॉडल ऑब्जेक्ट्स से मेल खाने के लिए भी टाइप किया जाता है। उत्पाद संग्रह ऑब्जेक्ट को तुरंत चालू करने के लिए एक उत्पाद मॉडल का उपयोग किया जा सकता है।

एक संग्रह ऑब्जेक्ट ऑब्जेक्ट्स के समूह (संग्रह, सरणी, सूची इत्यादि) लाने के लिए SQL बनाता है, और इसमें मुख्य मॉडल ऑब्जेक्ट को डेटा असाइन करने के लिए कोड भी शामिल है। क्योंकि इस कोड एक मॉडल के संसाधन मॉडल वस्तु में कोड से थोड़ी अलग है, वहां अक्सर मॉडलों के बीच मामूली विसंगतियों सीधे या एक संग्रह के माध्यम से भरी हुई हैं। उदाहरण के लिए, एक संग्रह एक मॉडल के _afterLoad विधि कॉल नहीं है, या एक EAV संग्रह (जब तक addAttributeToCollection('*') प्रयोग किया जाता है) डिफ़ॉल्ट रूप से सभी विशेषता डेटा लोड नहीं होगा। बहुत सारे Magento विकास इन विसंगतियों के लिए ट्रैकिंग और खाते हैं।

अंत में, ऊपर से विचलित Magento स्रोत कोड में स्थान हैं। उदाहरण के लिए: संग्रह संग्रह वस्तु मुक्त खड़े हैं - वे एक विशिष्ट मॉडल वर्ग से संबंध नहीं हैं। उपरोक्त को ध्यान में रखें, लेकिन आपको आश्चर्यचकित करने के लिए विशिष्ट Magento मॉड्यूल के लिए तैयार रहें।

+8

द्वारा एक बहुत अच्छा आलेख Magento समुदाय में आपका योगदान अमूल्य है। धन्यवाद। –

+0

@ एलान स्ट्रॉम।बहुत से धन्यवाद :) – ROBIN

+1

@alan यदि आपको कोई फर्क नहीं पड़ता है तो कृपया बी/डब्ल्यू संसाधन मॉडल और संसाधन संग्रह को अलग कर सकते हैं। क्या यह सही है अगर हम कहते हैं कि रिसोर्स मॉडल हिट या सिंगल रो पर काम करता है (जैसे आरओयू पर एक्शन, अपडेट, डिलीट और एक्शन का चयन करें) और संसाधन संग्रह कार्य ROWS के समूह पर? कृपया मुझे माफ़ कर दो, यह एक मूर्ख सवाल हो सकता है, मैं यह पूछते हुए डर रहा हूं :) – ROBIN

3

टाइप करने के लिए :) एलन तूफान महान लेख लिखा था के बारे में magento model basics

+0

एलन –