जवाबों:
इसका सबसे तेज़ तरीका इस क्वेरी को सीधे चलाना है।
DELETE FROM `catalog_product_entity` WHERE `sku` IN ('SKU1', 'SKU2', ...., 'SKU1000');
सब कुछ अच्छी तरह से झरना चाहिए। विशेषता मान हटा दिए जाएंगे, श्रेणी संबंध हटा दिए जाएंगे, अपशेल, क्रॉसलेस और संबंधित और इतने पर।
[संपादित करें]
इसमें एक पकड़ है। इसे खोलने के लिए STW का धन्यवाद। समीक्षा और रेटिंग अनाथ रहेगी क्योंकि उनके लिए उत्पाद तालिका के लिए कोई विदेशी कुंजी नहीं है।
->delete()
लेकिन घटनाओं के लिए सुनने वाले किसी भी कोड को चकमा देगा। स्टॉक मैगेंटो में यह प्रतीत होता है कि समीक्षा और रेटिंग अनाथ हो जाएंगी (जब उनका संबद्ध उत्पाद होगा तो उन्हें हटाया नहीं जाएगा)।
catalog_product_entity_*
तालिकाओं में entity_id
फ़ील्ड पर फ़ील्ड के लिए एक FK है catalog_product_entity.entity_id
। उन्हें अच्छी तरह से झरना चाहिए।
सभी Marius के प्रति सम्मान है, लेकिन कृपया डेटाबेस से सीधे संपर्क न करें यदि यह सभी परिहार्य है। हो सकता है कि संबंधित टेबल को स्वचालित रूप से अपडेट कर दिया जाए, यदि आपकी Magento की रिलीज़ और आपके सभी एक्सटेंशन सभी सही स्थानों पर बग-मुक्त हैं। लेकिन अगर वे नहीं हैं, तो उस तरह की चीज आपकी साइट को नष्ट कर सकती है।
इसके बजाय, आप Magento की अपनी CSV आयात सुविधा का उपयोग कर सकते हैं।
बस अपने SKU को एक फ़ाइल में सूचीबद्ध करें, जो सरल है:
sku
ABC1
ABC2
ABC3
...आदि। फिर CSV फ़ाइल के रूप में सहेजें।
उसके बाद, सिस्टम> आयात / निर्यात> आयात में, एंटिटी प्रकार का चयन करें: उत्पाद और आयात व्यवहार: एंटिटीज को हटाएं, और इस फाइल को आयात करें। और बस!
Mage_ImportExport_Model_Import_Entity_Product::_deleteProducts()
) के माध्यम से उत्पादों को हटा देता है
आप इसे प्रोग्रामेटिक रूप से कर सकते हैं। एक skustodelete.csv सूची को हटाए जाने के लिए सभी स्कोस बनाएं और उसके बाद यहां आगे बढ़ने के लिए कोड है
require_once 'app/Mage.php';
Mage :: app("default")->setCurrentStore(Mage_Core_Model_App :: ADMIN_STORE_ID);
$skuAll = array();
$file_handle = fopen("skustodelete.csv", "r");
$catalog = Mage::getModel('catalog/product');
while (!feof($file_handle)) {
$line_of_text = fgetcsv($file_handle, 1024);
$allSku = $line_of_text[0];
$product = $catalog->loadByAttribute('sku', $allSku);
try {
$product->delete();
echo "Product with ID: " . $product->getId() . " Deleted Successfully". PHP_EOL;
} catch (Exception $e) {
echo "Product with ID: " . $product->getId() . "cannot be deleted" . PHP_EOL;
}
}
echo "Finish Delete";
कोई भी कोड तरीका नहीं
के तहत व्यवस्थापक अनुभाग में Manage Products
अपने सभी उत्पादों के साथ एक ग्रिड मिल जाएगा। एक कॉलम कहा जाता है SKU
। यहां आप मूल्य के आधार पर अपने उत्पादों को फ़िल्टर कर सकते हैं।
फिर एक बार SKU द्वारा फ़िल्टर किए जाने के बाद, आप उन सभी वस्तुओं का चयन करने के लिए बायीं ओर चेकबॉक्स का उपयोग कर सकते हैं, जिन्हें आप हटाना चाहते हैं।
ध्यान दें select all
जो पूर्ण ग्रिड में सभी आइटम का select visible
चयन करेंगे और जो ग्रिड के वर्तमान पृष्ठ पर केवल आइटम का चयन करेंगे।
एक बार जब आप अपने इच्छित आइटम चुन लेते हैं, तो आप ग्रिड के ऊपरी दाएँ हाथ की तरफ बड़े पैमाने पर एक्शन बटन का उपयोग कर सकते हैं और डिलीट विकल्प का चयन कर सकते हैं।
यह आपको यह सुनिश्चित करने के लिए प्रेरित करेगा कि आप इन वस्तुओं को हटाना चाहते हैं। इस पॉप-अप के लिए हां का चयन करने के बाद यह आपके आइटम को हटाने के लिए आगे बढ़ेगा। आपकी अनुक्रमणिका सेटिंग्स के आधार पर आपको इस प्रक्रिया के बाद एक पुन: सूचकांक चलाना पड़ सकता है।
केविन एस, आप सीएसवी फ़ाइल द्वारा उत्पाद को हटा सकते हैं। बिल्व कदम का पालन करें
चरण 1 :
एक csv फ़ाइल बनाएँ और उस स्कोस को अतीत करें जिसे आप सिस्टम से हटाना चाहते हैं। फ़ाइल का नाम skus.csv दें
चरण 2 :
अपनी रूट डायरेक्टरी में php फाइल बनाएं और बदलें। फिर निम्न कोड को अतीत
require_once '../app/Mage.php';
Mage :: app("default") -> setCurrentStore( Mage_Core_Model_App :: ADMIN_STORE_ID );
$skuAll =array();
$file_handle = fopen("skus.csv", "r");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
$allSku = $line_of_text[0];
}
$products = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter(
'sku', array('in' => $allSku)
)
->load();
if(is_array($products))
{
foreach ($products as $key => $pId)
{
try
{
$product = Mage::getModel('catalog/product')->load($pId)->delete();
echo "successfully deleted product with ID: ". $pId ."<br />";
}
catch (Exception $e)
{
echo "Could not delete product with ID: ". $pId ."<br />";
}
}
}
नोट: इस कोड को चलाने से पहले मैंने आपसे सिफारिश की थी कि आपको बैकअप मिलना चाहिए। मुझे उम्मीद है कि इसकी मदद से आपको मदद मिलेगी।
क्योंकि सूची टेबल
कैटलॉग_प्रोडक्ट_एंटिटी की विदेशी कुंजी हैं।
इसलिए जब कैटलॉग_प्रोडक्ट_एंटिटी में कोई रिकॉर्ड हटाएं, तो ऊपर दी गई तालिकाओं के कुछ रिकॉर्ड भी हटा दिए जाएंगे।
कोड (मारियस का उत्तर लागू करें) उन सभी उत्पादों को हटा दें जिनके पास Unit_id है <= 18069:
$adapter = $setup->getConnection("catalog_write");
$where = array(
'entity_id <= ?' => '18069'
);
$tableCatalogProduct = Mage::getModel("catalog/product")->getResource()->getEntityTable();
$adapter->delete($tableCatalogProduct, $where);
$tableRating = Mage::getModel("rating/rating")->getResource()->getMainTable();
$adapter->delete($tableRating, $where);
$tableRating = Mage::getModel("review/review")->getResource()->getMainTable();
$adapter->delete($tableRating, $where);