আমি দাম অনেকগুলি পণ্যের কাছে আপডেট করার চেষ্টা করছি (10.000 এর বেশি)। আমি এখনই যেভাবে এটি করছি তা অত্যন্ত সময়সাপেক্ষ। সমস্ত পণ্য লুপ করা এবং সেগুলির বেশিরভাগ আপডেট করার সর্বোত্তম উপায় কোনটি?
ধন্যবাদ
আমি দাম অনেকগুলি পণ্যের কাছে আপডেট করার চেষ্টা করছি (10.000 এর বেশি)। আমি এখনই যেভাবে এটি করছি তা অত্যন্ত সময়সাপেক্ষ। সমস্ত পণ্য লুপ করা এবং সেগুলির বেশিরভাগ আপডেট করার সর্বোত্তম উপায় কোনটি?
ধন্যবাদ
উত্তর:
হাই ম্যাজেন্টো নীচের কোড দ্বারা একটি বৈশিষ্ট্য সরবরাহ করুন
$product->setAttributeCode($newValue)
$ProductObject->getResource()->saveAttribute($product, 'attribute_Code');
$product=Mage::getModel('catalog/product')->load($id);
$product->setSpecialFromDate('2010-10-28');
// below code use for time format
$product->setSpecialFromDateIsFormated(true);
$product->getResource()->saveAttribute($product, 'special_from_date');
$productIds = array(1,3,2);
$products = Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('entity_id', array('in' => $productIds));
foreach($products as $product)
{
$product->setSpecialFromDate('2010-10-28');
// below code use for time format
$product->setSpecialFromDateIsFormated(true);
$product->getResource()->saveAttribute($product, 'special_from_date');
}
Mage::getSingleton('catalog/product_api')->update();
এবং Mage::getSingleton('catalog/product_action')->updateAttributes()
। product_api গড়ে গড়ে ১. seconds সেকেন্ড সময় নিয়েছিল এবং পণ্য_অ্যাকশন গড়ে গড়ে ১.০ সেকেন্ড সময় নেয়। তবে, $product->getResource()->saveAttribute()
গড় গড়ে 0.04 সেকেন্ড নিয়েছে। ধন্যবাদ!
$product->getResource()->saveAttribute
। ধন্যবাদ!!
একটি এসকিউএল ক্যোয়ারী লিখুন।
দ্বিতীয় সেরা উপায় (এবং আমি প্রস্তাবিত এক): \Mage_Catalog_Model_Resource_Product_Action::updateAttributes
U_maxx দ্বারা কোড উদাহরণ:
$allProductIds = Mage::getModel('catalog/product')->getCollection()->getAllIds();
$attributeCode = 'some_eav_attribute';
$attributeValue = NULL;
$attrData = array( $attributeCode => $attributeValue );
$storeId = 0;
// no reindex:<
Mage::getSingleton('catalog/resource_product_action')->updateAttributes($allProductIds, $attrData, $storeId);
// reindex:
Mage::getModel('catalog/product_action')->updateAttributes($allProductIds, $attrData, $storeId);
এটি বহুবিধ মান সহ কীভাবে কাজ করবে? এটি কি 'যুক্ত' করে বা অন্যান্য প্রাক-নির্বাচিত মানগুলিকে ওভাররাইট করে
বহুগুণগুলি সাধারণত কমা বিচ্ছিন্ন পূর্ণসংখ্যার মতো সংরক্ষণ করা হয় 27,42,4711
। সুতরাং আপনি যদি মানটি বলার বদল করেন 1
তবে অন্যান্য মানগুলি হারিয়ে যায়। তবে আপনি যা করতে পারেন তা হ'ল CONCAT(value, ',1')
মানে কমা দ্বারা বিচ্ছিন্ন হয়ে নতুন মান যুক্ত করা। আমি মনে করি আপনি দু'বার মান যোগ করলেও, এটি কোনও সমস্যা নয়, কারণ পরের বার আইটেমটি সংরক্ষণ করা হয় এবং দ্বিতীয় মানটিকে উপেক্ষা করে ম্যাজেন্টো এটিকে ফিল্টার করে।
<?php $allProductIds = Mage::getModel('catalog/product')->getCollection()->getAllIds(); $attributeCode = 'some_eav_attribute'; $attributeValue = NULL; $attrData = array( $attributeCode => $attributeValue ); $storeId = 0; Mage::getSingleton('catalog/resource_product_action')->updateAttributes($allProductIds, $attrData, $storeId);
Mage::getSingleton('catalog/resource_product_action')
জন্য Mage::getModel('catalog/product_action')
সঙ্গে সঠিক একই পরামিতি উপরে উল্লেখ করেছে।
10 কে পণ্য, এসকিউএল ব্যবহার করুন। EAV কেবল জলাশয়কে জঞ্জাল করে। প্রতি প্রশ্ন দ্রুততম উপায়।
বৈশিষ্ট্য_আইডি সন্ধান করুন
SELECT * FROM eav_attribute where entity_type_id = 4 and attribute_code = 'YOUR_ATTRIBUTE_CODE_HERE'
attribute_id
উপরের প্রশ্ন থেকে পাওয়া আপডেট ।
UPDATE catalog_product_entity_int SET value = 1 WHERE attribute_id = FOUND_ATTRIBUTE_ID
আমি মনে করি আপনি আপডেট সহ একটি সাবলেট করতে পারেন তবে সরলতার জন্য দুটি এসকিউএল ক্যোয়ারী উপলব্ধি করা সবচেয়ে সহজ।
দ্রষ্টব্য: entity_type_id = 4
সর্বদা পণ্য EAV এন্ট্রি হয়। আপনার যদি ভরসাধারণের বিভাগের প্রয়োজন হয় বা গ্রাহকের বৈশিষ্ট্যগুলি এটির সাথে আলাদা আলাদা হবে তেমনি এটি কী ধরণের বৈশিষ্ট্যের উপর নির্ভর করে আপডেট করা হবে তা আপনার আপডেটিং the এছাড়াও আপনার যদি মাল্টি-স্টোর সেটআপ থাকে তবে নিশ্চিত হন এবং নোট এবং শর্ত দিনstore_id
উপরের ফ্যাবিয়ানের উত্তরের আরও আপনি একবারে একাধিক ক্ষেত্র আপডেট করতে পারবেন। নীচের উদাহরণটিতে মাত্র ২ টি (স্টক, স্টক স্ট্যাটাস) রয়েছে তবে আপনি যতটা চান ব্যবহার করতে পারেন।
$product_ids = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToFilter('status', array('eq' => 2)) //only disabled
->getAllIds();
$attrData = [
['attribute_one' => 1],
['attribute_two' => 1]
];
$storeId = 0;
Mage::getSingleton('catalog/resource_product_action')
->updateAttributes($product_ids, $attrData, $storeId);