มีสองวิธีที่จะไปเกี่ยวกับเรื่องนี้อย่างใดอย่างหนึ่งคือการได้รับcatalog/product
รูปแบบวีโอไอพีและโหลดผลิตภัณฑ์โดยใช้ ID ซึ่งจะให้ผลิตภัณฑ์ทั้งหมดแล้วตั้งชื่อและบันทึกไว้
$product = Mage::getModel('catalog/product')->load(1);
$product->setName('foobar!');
try {
$product->save();
} catch(Exception $e) {
echo "{$e}";
}
ดังที่ OP ชี้ให้เห็นสิ่งนี้ค่อนข้างหนักเพียงแค่เปลี่ยนแอตทริบิวต์หนึ่ง ฉันคิดว่าเครื่องมือการอัปเดตจำนวนมากของแอตทริบิวต์นั้นควรใช้วิธีที่สะอาดกว่าในการทำสิ่งนี้และพบ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 วินาที