2012-06-07 14 views
14

आज मैं Magento के साथ फिर से लड़ रहा हूँ :) और मैंMagento उत्पाद लोड - loadByAttribute और लोड विधियों के बीच अंतर

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $product_sku); 

और

के बीच एक अंतर
$product = Mage::getModel('catalog/product')->load($product_id); 

किसी को भी मुझे कोई फर्क exaplain कर सकते हैं पाया इन दो दृष्टिकोणों के बीच? मैंने पाया कि जब मैं sku द्वारा एक उत्पाद लोड कर रहा हूं तो जब मैं इसे बदले गए डेटा के साथ फिर से सहेजने का प्रयास करता हूं तो मुझे त्रुटि के साथ 'Varien_Exception' त्रुटि अपवाद मिलता है 'अवैध विधि Varien_Object :: ऐप \ code \ core \ mage में सहेजें \ CatalogInventory \ Model \ Observer.php (153): Varien_Object -> __ कॉल ('सेव', ऐरे) यह सच है क्योंकि एक बार जब आप sku द्वारा लोड करने का प्रयास करते हैं तो एक अन्य पर्यवेक्षक उत्पाद की स्टॉक आइटम को Varien_Object के रूप में सेट करता है, जो कि pitfall या I इसे पर्याप्त समझ में नहीं आता है, लेकिन

मैं अपने शुरुआती से दैनिक Magento विकास करता हूं इसलिए मुझे सिस्टम के बारे में बहुत कुछ पता है और यह मेरे लिए नया है। अग्रिम धन्यवाद, जारो।

+0

वाह धन्यवाद एक ही समस्या थी, अब इसे स्कू द्वारा लोड कर रहा है और इसके बाद आईडी – wutzebaer

+0

धन्यवाद। पहली विधि मेरे लिए काम करती है और मुझे विश्वास है, दूसरी विधि चर स्वीकार नहीं करती है? जब मैंने एसकेयू संख्या को कड़ी मेहनत की तो यह काम करता था। –

उत्तर

17

दिलचस्प। हालांकि दोनों विधियां आपको पूरी तरह से लोड किए गए ईएवी डेटा के साथ एक एकल उत्पाद मॉडल उदाहरण प्रदान करती हैं (बशर्ते loadByAttribute() का तीसरा पैरामीटर पास नहीं हुआ है या * है), जो पर्यवेक्षकों को स्टॉक-संबंधित डेटा जोड़ते हैं वे उत्पाद बनाम उत्पाद संग्रह के लिए अलग हैं, फिर भी दोनों स्टॉक सूचना ऑब्जेक्ट्स उत्पाद डेटा कुंजी "stock_item" में जोड़े जाते हैं। यह बहस योग्य है, लेकिन यह एक बग की तरह लगता है। मुझे लगता है कि Mage_CatalogInventory_Model_Observer::saveInventoryData() या Mage_CatalogInventory_Model_Observer::_prepareItemForSave() इसे संभालेगा।

आप stock_item ऑब्जेक्ट का उपयोग कर उत्पाद उत्पाद आइटम को अपने उत्पाद उदाहरण पर पूरी तरह से सेट करके इस समस्या को हल कर सकते हैं।

+0

यह एक प्रकार की बग की तरह दिखता है, जिसे आप एक संग्रह बनाते हैं जिसमें आपके पास फ़ेक्ड स्टॉक जानकारी वाले उत्पाद होते हैं और एक बार जब आप बदलना चाहते हैं तो यह विफल हो जाता है। इसे समझने में मुझे 3 दिन लगे, क्योंकि यह कोर में वास्तव में गहराई से हो रहा है और आपको संदेह नहीं है और इसकी उम्मीद है। मुझे इस तरह की जानकारी को अपने समय और जीवन को बचाने के साथ साझा करने की आवश्यकता है :) – Jaro

+2

[एक Magento योगदानकर्ता बनें] (http://www.magentocommerce.com/images/uploads/MCA- Magento- योगदानकर्ता- एग्रीमेंट -230 9 0 9 पीडीएफ): -) – benmarks

+0

ऐसा लगता है कि यह अभी भी 1.8 में होता है? मुझे आज उस समस्या का सामना करना पड़ा। – Nikitas

संबंधित मुद्दे