1

I have different stores of different products. I want to change all products prices of particular store. I have a code of it. But it takes so much time on save function because i have so many products.

$product = Mage::getModel('catalog/product')
                        ->setStoreId($storeid)
                        ->load($productid)->setPrice($price);$product->save();

Is there any better way?

umair ayub
  • 1,063
  • 2
  • 24
  • 39

2 Answers2

0

The fast solution for updating attributes is this

Mage::getSingleton('catalog/product_attribute')->updateAttributes(
    array($productId),
    array('price' => $price),
    $storeId
);

But in your case there is a catch. The price attribute scope can be global or website. You shouldn't change the price for a store view.
I'm not sure it even works, and even if it does, you will lose the value the next time you manually save a product because of the price attribute scope.

Marius
  • 197,939
  • 53
  • 422
  • 830
0

You can quick update attribute using ->getResource()->saveAttribute('yourattriibutecode');

$product = Mage::getModel('catalog/product')
                        ->setStoreId($storeid)
                        ->load($productid);

$product->setPrice($price)->getResource()->saveAttribute($product, 'price');

Here you did not need save() which take lot of time;

See at :

Fastest way to update an attribute in all products

[Edit:]

$product->setSpecialPrice('');
$product->setSpecialFromDate();
$product->setSpecialToDate();

$product->getResource()->saveAttribute($product, 'special_price');
$product->getResource()->saveAttribute($product, 'special_from_date');
$product->getResource()->saveAttribute($product, 'special_to_date');
Amit Bera
  • 77,456
  • 20
  • 123
  • 237
  • Thanks Amit, i successfully updated my all products prices through your code but now i have got another problem. Now my all products are showing regular and special prices. i want to set just one price for each product. – umair ayub Nov 14 '14 at 13:25
  • make special price null using my code $product->setSpecialFromDate();$product->setSpecialToDate();$product->setSpecialPrice(''); – Amit Bera Nov 14 '14 at 13:31
  • and use >getResource()->saveAttribute($product, 'attibutecode'); every attribute – Amit Bera Nov 14 '14 at 13:32
  • I am sorry Amit, i am new in Magento. can you please write me a just one fine code as you wrote first. I am confused now. Thank You – umair ayub Nov 14 '14 at 13:40
  • Amit I am getting error.Call to a member function getBackend() on a non-object. – umair ayub Nov 16 '14 at 10:16