2013-01-10 10 views
7

मेरे पास एक विशेषता है जिसमें हजारों विकल्प हैं। विकल्प एक स्क्रिप्ट द्वारा प्रोग्रामेटिक रूप से बनाए जाते हैं जो मेरे सभी उत्पादों को फ़ीड से आयात करता है। साइट बहुत धीमी गति से चल रही है, इसलिए मुझे लगा कि मैं सभी पुराने विकल्पों से छुटकारा पाउंगा। समस्या यह है कि मैं संपादन पृष्ठ को Magento व्यवस्थापक बनाने में असमर्थ हूं। मैं MySQL क्वेरी के साथ विशेषता विकल्पों की पहचान कैसे कर सकता हूं? या मैं प्रोग्रामेटिक रूप से सभी विशेषता विकल्पों को कैसे हटा सकता हूं?Magento विशेषता मान/विकल्प हटाएं MySQL

धन्यवाद!

उत्तर

10

यह आप सभी विकल्पों को

$attribute_code = 'color'; 
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product',$attribute_code); 
$options = $attribute->getSource()->getAllOptions(); 

की सूची दे देंगे और यह आप विशेषता को अपडेट और विकल्प

$options['delete'][$option_id] = true; 
$options['value'][$option_id] = true; 

$options['delete'][$another_option_id] = true; 
$options['value'][$another_option_id] = true; 

// (...) 

$setup = new Mage_Eav_Model_Entity_Setup('core_setup'); 
$setup->addAttributeOption($options); 
+0

पावेल, आपके उत्तर के लिए धन्यवाद। मैं एक नौसिखिया हूं इसलिए मुझे थोड़ा और मदद चाहिए। सभी विशेषता विकल्पों को हटाने के लिए मैं इस स्क्रिप्ट का उपयोग कैसे कर सकता हूं? अगर मुझे प्रत्येक विशेषता विकल्पों में लिखने की ज़रूरत है तो इसमें घंटों लगेंगे। धन्यवाद – Haim

+0

आप पहली लिपि के साथ विशेषता के लिए सभी विकल्पों की सूची प्राप्त कर सकते हैं। जैसा कि मैंने समझा है कि आपके पास पुरानी विकल्पों की सूची है, आप लूप लिख सकते हैं जो जांचता है कि क्या मान (लेबल) पुराना है और इस विकल्प में ध्वज हटाएं। अंत में - 'addAttributeOption()' विधि चलाएं। –

+0

या आप पूर्ण समाधान की तलाश में हैं? –

0

यहाँ दूर करने के लिए अनुमति देता है एक प्रश्न है कि टेबल हैं कि करने के लिए संबंधों से पता चलता है involed। आशा है कि ये आपकी मदद करेगा। आप उन्हें इस तरह से प्रत्येक स्टोर दृश्य के लिए व्यक्तिगत रूप से प्राप्त कर सकते हैं।

एक विशेषता (या कुछ और कि इन तालिकाओं के अंदर संग्रहित) की एक दुकान को देखने के लिए लेबल लाने के लिए उपयोग करें:

SELECT 
    EA.attribute_id, 
    EA.entity_type_id, 
    EA.attribute_code, 
    EAL.value AS label 
FROM `magento_eav_attribute` AS EA 
    INNER JOIN `magento_eav_attribute_option` 
     AS EAO ON EAO.attribute_id = EA.attribute_id 
    INNER JOIN `magento_eav_attribute_label` 
     AS EAL ON EAL.attribute_id = EA.attribute_id 
WHERE 
    EAL.store_id = 0 AND 
    EA.attribute_code = 'color' LIMIT 0,1'; 

कि कुछ उपयोग को संभालने के लिए अपने विकल्प से संबंधित है विकल्प मान प्राप्त करने के लिए इस तरह:

SELECT * 
    FROM `magento_eav_attribute_option_value` 
    WHERE store_id = 0 
     AND option_id = YOUR_OPTION_ID; 

या कुछ इन तालिकाओं कनेक्ट करने के लिए मिलती है का उपयोग सीधे

SELECT 
     EA.attribute_id, 
     EA.entity_type_id, 
     EA.attribute_code, 
     EAOV.option_id, 
     EAOV.value_id, 
     EAOV.value, 
     EAL.value AS label 
     FROM `magento_eav_attribute` AS EA 
     INNER JOIN `magento_eav_attribute_option` 
      AS EAO ON EAO.attribute_id = EA.attribute_id 
     INNER JOIN `magento_eav_attribute_option_value` 
      AS EAOV ON EAOV.option_id = EAO.option_id 
     INNER JOIN `magento_eav_attribute_label` 
      AS EAL ON EAL.attribute_id = EA.attribute_id 
    WHERE 
    EAOV.store_id = 0 AND 
    EAOV.option_id = YOUR_OPTION_ID AND 
    EAL.store_id = '0' AND 
    EA.attribute_code = 'color'; 

मुझे पता है कि यह आपके मूल्यों को हटाने का कोई तरीका नहीं है, लेकिन हो सकता है कि यह आपको आवश्यक डेटासेट लाने के तरीके की पहचान करने में आपकी सहायता करे।

सभी बेहतरीन।

0

यह वह जगह है मैं इसे कैसे

// Deleting attribute options by GUID 

$setup = new Mage_Eav_Model_Entity_Setup('core_setup'); 
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer", "position"); 

//Values have to be deleted one at a time 
// Eav Setup.php 
$updates = array(); 
foreach ($attribute->getSource()->getAllOptions() as $option) { 
     $update['value'] = array(); 
     $update['delete'][$option['value']] = true; 
     $update['attribute_id'] = $attribute->getId(); 
     $update['value'][$option['value']] = true; 
     $updates[] = $update; 
} 

$setup->addAttributeOption($updates); 
die(); 
0

कर यहाँ के बारे में जाना, मैं तुम्हें बताएं कि किस तरह सभी प्रोग्राम के रूप में विशेषता विकल्प मान Magento में नष्ट करने के लिए कर रहा हूँ। आप Magento के व्यवस्थापक पैनल से विशेषता विकल्प मान भी हटा सकते हैं, लेकिन यदि बहुत सारे विशेषता विकल्प मान हैं तो व्यवस्थापक से हटाने में इतना समय लगता है ताकि आप Magento में प्रोग्राम विकल्प को प्रोग्रामेटिक रूप से जोड़ सकें। इसके लिए आपको बस अपने Magento रूट फ़ोल्डर में deleteattributeoptions.php फ़ाइल बनाने की आवश्यकता है, इसमें कोड डालें और ATTRIBUTE_CODE_HERE को अपने विशेषता कोड के साथ बदलें।

<?php 

require_once 'app/Mage.php';$app = Mage::app('admin');umask(0); 
$attribute_code = 'ATTRIBUTE_CODE_HERE'; 
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attribute_code); 
$options = $attribute->getSource()->getAllOptions(); 
$optionsDelete = array(); 
foreach($options as $option) { 
if ($option['value'] != "") { 
$optionsDelete['delete'][$option['value']] = true; 
$optionsDelete['value'][$option['value']] = true; 
} 
} 
$installer = new Mage_Eav_Model_Entity_Setup('core_setup'); 
$installer->addAttributeOption($optionsDelete); 

?> 

मुझे आशा है कि इससे आपकी मदद मिलेगी। :)

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