উত্তর:
এটি সম্পর্কে 2 টি উপায় আছে, একটি হ'ল ম্যাজেন্টো catalog/product
মডেল পেয়ে আইডি দ্বারা পণ্যটি লোড করা যা আপনাকে পুরো পণ্য দেয়, তারপরে নামটি সেট করে সংরক্ষণ করে।
$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