Jawaban:
Ada 2 cara untuk melakukan ini, satu adalah dengan mendapatkan catalog/product
model Magento dan memuat produk dengan ID yang akan memberi Anda seluruh produk, kemudian mengatur nama dan menyimpannya.
$product = Mage::getModel('catalog/product')->load(1);
$product->setName('foobar!');
try {
$product->save();
} catch(Exception $e) {
echo "{$e}";
}
Seperti yang ditunjukkan OP, ini cukup berat hanya untuk mengubah satu atribut. Saya agak berpikir bahwa alat pembaruan massal atribut harus menggunakan cara yang lebih bersih untuk melakukan ini dan menemukan Mage_Catalog_Model_Resource_Product_Action
kelas
$product_id = 1;
$store_id = 0;
$action = Mage::getModel('catalog/resource_product_action');
$action->updateAttributes(array($product_id), array(
'name' => 'foobar!'
), $store_id);
Tolok ukur [PEMBARUAN]
Begitu juga skrip benchmark cepat dan hasilnya berbicara sendiri.
$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";
Waktu: 0,076527833938599 detik
Waktu: 4,757472038269 detik
Jika Anda perlu menyimpan hanya satu atribut dan Anda sudah memiliki produk dimuat, Anda juga dapat menggunakan metode ini:
$product->setData('attribute_code',$someData);
$product->getResource()->saveAttribute($product,'attribute_code');
Metode ini jauh lebih cepat daripada catalog/resource_product_action