जवाबों:
इसके बारे में जाने के 2 तरीके हैं, एक है Magento catalog/product
मॉडल प्राप्त करना और उत्पाद को ID द्वारा लोड करना जो आपको पूरा उत्पाद देगा, फिर नाम सेट करना और इसे सहेजना।
$product = Mage::getModel('catalog/product')->load(1);
$product->setName('foobar!');
try {
$product->save();
} catch(Exception $e) {
echo "{$e}";
}
जैसा कि ओपी ने कहा, यह सिर्फ एक विशेषता को बदलने के लिए काफी भारी है। मुझे लगा कि विशेषता मास अपडेट टूल को ऐसा करने के लिए एक क्लीनर तरीके का उपयोग करना चाहिए और Mage_Catalog_Model_Resource_Product_Action
कक्षा को ढूंढना चाहिए
$product_id = 1;
$store_id = 0;
$action = Mage::getModel('catalog/resource_product_action');
$action->updateAttributes(array($product_id), array(
'name' => 'foobar!'
), $store_id);
[अद्यतन] बेंचमार्क
तो एक त्वरित बेंचमार्क स्क्रिप्ट और परिणाम खुद के लिए बोलते हैं।
$starttime = microtime(true);
for ($i=20; $i>0; $i--)
{
$action = Mage::getModel('catalog/resource_product_action');
$action->updateAttributes(array(1), array(
'name' => 'foobar!'
), 0);
}
echo "Time: " . (microtime(true) - $starttime) . " seconds\n";
$starttime = microtime(true);
for ($i=20; $i>0; $i--)
{
$product = Mage::getModel('catalog/product')->load(1);
$product->setName('foobar!');
$product->save();
unset($product);
}
echo "Time: " . (microtime(true) - $starttime) . " seconds\n";
समय: 0.076527833938599 सेकंड
समय: 4.757472038269 सेकंड
यदि आपको केवल एक विशेषता को सहेजने की आवश्यकता है और आपके पास पहले से ही भरा हुआ उत्पाद है तो आप इस विधि का भी उपयोग कर सकते हैं:
$product->setData('attribute_code',$someData);
$product->getResource()->saveAttribute($product,'attribute_code');
यह विधि की तुलना में बहुत तेज है catalog/resource_product_action