एक EAV मॉडल का _data


9

मैं समझता हूं कि एक साधारण मॉडल (उदाहरण के लिए cataloginventory/stock_item) का डेटा फ़ील्ड मान जोड़े का एक सरणी है, जो डेटाबेस तालिकाओं के क्षेत्रों के अनुरूप है। मैं EAV मॉडल के लिए _data की सामग्री को जानने के लिए उत्सुक था, इसलिए मैंने catalog/productडीबग () फ़ंक्शन का उपयोग करने की _data की जाँच की ।

खोज यह है कि इसमें फ़ील्ड मान जोड़े हैं catalog_product_entity, और इस इकाई के कुछ गुण भी हैं। वे मेरे लिए समझदार हैं। मैं जो बात समझ नहीं पा रहा हूं वह यह है कि इसमें एक जोड़ी भी शामिल है:

...    
[stock_item (Mage_CatalogInventory_Model_Stock_Item)] => Array
            (
                [item_id] => 1
                [product_id] => 1
                [stock_id]
                ......
            )
...

, जिसका एक उदाहरण है cataloginventory/stock_item। यह न तो कैटलॉग / उत्पाद इकाई का एक गुण है, न ही एक क्षेत्र है catalog_product_entity, इसे क्यों शामिल किया गया है?

क्या EAV मॉडल के लिए _data का एक सम्मेलन है?

जवाबों:


6

सिद्धांत _dataमें कुछ भी हो सकता है।
आप का उपयोग करके वहाँ अपने कस्टम मान जोड़ सकते हैं setData($key, $value)।
आमतौर पर इसमें ऐसा होता है जैसे आपने कहा, तालिका में स्तंभों के लिए मान, या विशेषताओं के लिए यह एक ईएवी इकाई है, लेकिन कुछ विशेष मामलों के लिए इसमें अन्य मूल्य हो सकते हैं।
यह उदाहरण के लिए उत्पादों के लिए होता है।
यहाँ क्यों है।
मॉड्यूल Mage_CatalogInventoryमें घटना के लिए एक पर्यवेक्षक है catalog_product_load_after। जब भी आप कॉल करते हैं, तो यह ईवेंट कहा जाता है $product->load()।
निष्पादित विधि है Mage_CatalogInventory_Model_Observer::addInventoryData।
यह एक पुकार है $productStockItem->assignProduct($product);।
यदि हम गहरी खुदाई करते हैं तो हम Mage_CatalogInventory_Model_Stock_Item::assignProductएक बिंदु पर उस कॉल को समाप्त कर देते हैं $product->setStockItem($this);। यह करने के लिए eqivalent है $product->setData('stock_item', $this)।
आप अंत तो के कहने होने Mage_CatalogInventory_Model_Stock_Itemमें_data['stock_item']।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.