ম্যাজেন্টোতে একাধিক পণ্য মুছুন


12

এসকিউ দিয়ে ফিল্টার করে একাধিক পণ্য মুছে ফেলার কোনও উপায় আছে কি? আমার প্রায় 1000 টি পণ্য রয়েছে যা আমি মুছতে চাই।

উত্তর:


17

এটি করার দ্রুততম উপায় হ'ল সরাসরি এই কোয়েরিটি চালানো।

DELETE FROM `catalog_product_entity` WHERE `sku` IN ('SKU1', 'SKU2', ...., 'SKU1000');

সবকিছু সুন্দরভাবে ক্যাসকেড করা উচিত। বৈশিষ্ট্য মানগুলি মুছে ফেলা হবে, বিভাগের সম্পর্কগুলি মুছে ফেলা হবে, আপসেলগুলি, ক্রসসেলগুলি এবং সম্পর্কিত এবং এই জাতীয়।

[সম্পাদনা] এটির
জন্য একটি ধরা আছে। এটি সন্ধানের জন্য এসটিডব্লিউকে ধন্যবাদ। পর্যালোচনা এবং রেটিংগুলি অনাথ থাকবে কারণ তাদের জন্য পণ্য সারণীতে কোনও বিদেশী কী নেই।


5
এটির পরে পুনর্নির্মাণ করতে ভুলবেন না (যদি আপনি ফ্ল্যাট পণ্য ক্যাটালগ ব্যবহার করেন)
ভ্লাদিমির কেরখফ

2
এটি সাধারণভাবে মুছে ফেলার জন্য অ্যাডমিন আমদানি / রফতানির সরঞ্জামটি ব্যবহার করে। কল করার সাথে তুলনা করা এটি অত্যন্ত দ্রুত ->delete()তবে ইভেন্টগুলির জন্য যে কোনও কোড শোনাতে হবে। স্টক ম্যাজেন্টোতে দেখা যাচ্ছে যে পর্যালোচনা এবং রেটিংগুলি এতিম হবে (তাদের সম্পর্কিত পণ্যটি যখন হবে তখন তারা মুছে ফেলা হবে না)।
এসটিডাব্লু

@STW। সুন্দর ক্যাচ. আমি পর্যালোচনা এবং রেটিং সম্পর্কে সম্পূর্ণরূপে ভুলে গেছি।
মারিয়াস

আমি নিশ্চিত নই যে এটি ভাল ধারণা কিনা। ইভা টেবিলগুলিতে সংরক্ষণ করা বৈশিষ্ট্য ডেটা সম্পর্কে কী? এগুলিও কি মুছে ফেলা হয়?
অনুরাগ পটবান্ধা

@AnuragPatbandha। সমস্ত catalog_product_entity_*টেবিলের entity_idমাঠে মাঠে একটি এফকে রয়েছে catalog_product_entity.entity_id। তাদের সুন্দরভাবে ক্যাসকেড করা উচিত।
মারিয়াস

15

মারিয়াসের প্রতি সমস্ত শ্রদ্ধা, তবে দয়া করে ডাটাবেসটির সাথে এড়িয়ে চলা সরাসরি এড়িয়ে চলুন না। হয়তো সংশ্লিষ্ট টেবিল স্বয়ংক্রিয়ভাবে আপডেট করা হবে, যদি Magento এবং আপনার সকল এক্সটেনশান আপনার মুক্তির বাগ বিনামূল্যে সব ঠিক জায়গায় আছে। তবে যদি তা না হয় তবে এই ধরণের জিনিসটি আপনার সাইটটিকে ধ্বংস করতে পারে।

পরিবর্তে, আপনি ম্যাজেন্টোর নিজস্ব সিএসভি আমদানি বৈশিষ্ট্যটি ব্যবহার করতে পারেন।

আপনার এসকিউগুলি কেবল একটি ফাইলে তালিকাভুক্ত করুন:

sku
ABC1
ABC2
ABC3

... ইত্যাদি। তারপরে CSV ফাইল হিসাবে সংরক্ষণ করুন।

তারপরে, সিস্টেম> আমদানি / রফতানি> আমদানিতে, সত্তার প্রকার: পণ্য এবং আমদানি আচরণ নির্বাচন করুন: সত্তা মুছুন এবং এই ফাইলটি আমদানি করুন। এবং এটাই!


2
fyi - সাধারণত আমি একমত যে সরাসরি ডিবি ইন্টারঅ্যাকশন এড়ানো সেরা; তবে বাস্তবে এইভাবেই ম্যাজেন্টো অ্যাডমিন আমদানি সরঞ্জামের মাধ্যমে পণ্যগুলি মুছে ফেলুন (দেখুন Mage_ImportExport_Model_Import_Entity_Product::_deleteProducts())
এসটিডাব্লু

মনে করুন আমি যদি নির্বাচিত স্টোর থেকে পণ্যগুলি মুছতে চাই তবে আমার সিএসভি ফর্ম্যাটটি কী।
zus

আপনি যদি কেবলমাত্র একটি নির্বাচিত স্টোর থেকে পণ্যগুলি অপসারণ করতে চান তবে সেগুলি ডাটাবেস থেকে সরাতে না চান, আপনি দুটি কলাম সহ একটি সিএসভি আমদানির চেষ্টা করতে পারেন: স্কু এবং স্টোর, নিশ্চিত করুন যে স্টোর কলামে কেবলমাত্র সেই স্টোর আইডি রয়েছে যা আপনি নির্ধারিত পণ্যটি চান , আমদানি আচরণ নির্বাচন করুন: আপডেট করুন এবং এটি আমদানি করুন। আমি যদিও এটি পরীক্ষা করেছি না, তাই সাবধানতার সাথে এগিয়ে যান! (যদি আমি সময় পাই তবে আমি এটি পরে পরীক্ষা করব এবং আরও একটি মন্তব্য যুক্ত করব)
ডগ ম্যাকলিন

6

আপনি প্রোগ্রামগতভাবে এটি করতে পারেন। মুছে ফেলার জন্য সমস্ত স্কাসকে তালিকাবদ্ধ করে একটি 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";

3

কোনটিই কোড উপায় নয়

প্রশাসকের অধীনে Manage Productsআপনার সমস্ত পণ্য সহ একটি গ্রিড পাবেন find বলা হয় একটি কলাম SKU। এখানে আপনি মানের উপর নির্ভর করে আপনার পণ্য ফিল্টার করতে পারেন।

স্কু ফিল্টার

তারপরে আপনি একবার এসকিউ দ্বারা ফিল্টার করলে আপনি মুছে ফেলতে চান এমন সমস্ত আইটেম নির্বাচন করতে বাম দিকে চেকবক্সগুলি ব্যবহার করতে পারেন।

একাধিক নির্বাচন

লক্ষ্য করুন select allযা সম্পূর্ণ গ্রিড সব আইটেম নির্বাচন করব এবং select visibleযা শুধুমাত্র গ্রিড বর্তমান পৃষ্ঠাতে আইটেম নির্বাচন হবে।

আপনি যে আইটেমগুলি নির্বাচন করেছেন তা চয়ন করার পরে আপনি গ্রিডের উপরের ডানদিকে ভর ক্রিয়া বোতামটি ব্যবহার করতে পারেন এবং মুছুন বিকল্পটি নির্বাচন করতে পারেন।

গণ ক্রিয়া মোছা

এটি আপনাকে এই আইটেমগুলি মুছতে চান তা নিশ্চিত করার জন্য আপনাকে অনুরোধ করবে। এই পপ-আপটিতে হ্যাঁ নির্বাচন করার পরে এটি আপনার আইটেমগুলি মুছতে অগ্রসর হবে। আপনার সূচক সেটিংসের উপর নির্ভর করে আপনাকে এই প্রক্রিয়াটির পরে পুনরায় সূচি চালাতে হতে পারে।


2
এবং সমস্ত নির্বাচন করুন ভয়াবহ দক্ষতার সাথে কাজ করে। ঘটনাক্রমে কোনও ধরণের অনুসন্ধানের বাধা ছাড়াই এটি চয়ন করা আপনার পণ্য ক্যাটালগের সমস্ত কিছু সত্যই মুছে ফেলে এবং একবার শুরু হয়ে গেলে, মুছে ফেলার সময় সার্ভারটি মেরে ফেলা বা মেমরির বাইরে চলে যাওয়া কেবল এগুলিই থামায়।
ফায়াসকো ল্যাবগুলি

3

কেভিন এস, আপনি সিএসভি ফাইল দ্বারা পণ্য মুছতে পারেন। শুধু বিলো পদক্ষেপ অনুসরণ করুন

ধাপ 1 :

একটি সিএসভি ফাইল তৈরি করুন এবং যে সিস্টেমটি আপনি সিস্টেম থেকে মুছতে চান তা শেষ করুন। ফাইলটিকে skus.csv হিসাবে নাম দিন

ধাপ ২ :

আপনার মূল ডিরেক্টরিতে একটি পিএইচপি ফাইল তৈরি এবং প্রতিস্থাপন করুন। তারপরে নিম্নলিখিত কোডটি অতীত করুন

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 />";
            }
        }
    }

দ্রষ্টব্য: এই কোডটি চালানোর আগে আমি আপনাকে প্রস্তাব দিয়েছিলাম আপনাকে অবশ্যই ব্যাকআপ নিতে হবে। আমি আশা করি এটি আপনাকে সাহায্য করবে।


0

কারণ তালিকা সারণী

  • catalog_product_entity_varchar,
  • catalog_product_entity_tier_price,
  • catalog_product_entity_media_gallery,
  • catalog_product_entity_media_gallery_value,
  • catalog_product_entity_text,
  • catalog_product_entity_group_price,
  • catalog_product_entity_datetime,
  • catalog_product_entity_decimal,
  • catalog_product_entity_int
  • catalog_category_product
  • catalog_product_link

ক্যাটালগ_প্রডাক্ট_এনটিটির বিদেশী কী।

সুতরাং ক্যাটালগ_প্রডাক্ট_এনটিটিতে কোনও রেকর্ড মুছে ফেললে উপরের টেবিলগুলির কিছু রেকর্ডও মুছে ফেলা হবে।

কোড (মারিয়াসের উত্তর বাস্তবায়ন করুন) সত্তা_আইডি থাকা সমস্ত পণ্য মুছুন <= 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);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.