2013-04-14 31 views
8

Özniteliğimi add_ten_pence güncelleştiren bir komut dosyası yazıyorum, öznitelik bir evet/hayır boolean değeridir. Şu anda veritabanında SKU's geçer ama maalesef veritabanını güncelleştirmiyor. Aşağıdaki senaryoyu yapıştırdım, nerede yanlış gittiğimi bilen var mı?Magento Özniteliğini Güncelleştirme Programatik olarak

Öznitelik varsayılan olarak 'Hayır' olarak ayarlandı ve ben betik çalıştığında 'Evet' olarak değiştirmek istiyorum ve tersi.

require_once('app/Mage.php'); 

umask(0); 
Mage::app('default'); 
Mage :: app()->setCurrentStore(Mage_Core_Model_App :: ADMIN_STORE_ID); 
$productCollection = Mage::getModel('catalog/product')->getCollection(); 

foreach($productCollection as $_product) 
{ 
    echo "\n".'updating '.$_product->getSku()."...\n"; 
    $product = Mage::getModel('catalog/product')->load($_product->getEntityId()); 
    $product->setAddTenPence(true); 
    $product->save(); 
} 

cevap

25

Tüm ürün koleksiyonu yerine tekil özniteliği kaydetmeyi deneyin.

require_once('app/Mage.php'); 

umask(0); 
Mage::app('default'); 
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
$productCollection = Mage::getModel('catalog/product')->getCollection(); 

foreach($productCollection as $_product) 
{ 
    echo "\n".'updating '.$_product->getSku()."...\n"; 
    $_product->setData('add_ten_pence', 1)->getResource()->saveAttribute($_product, 'add_ten_pence'); 
} 

GÜNCELLEME

Çok daha hızlı yol:

$productCollection = Mage::getModel('catalog/product')->getCollection(); 
$array_product = $productCollection->getAllIds();  
Mage::getSingleton('catalog/product_action')>updateAttributes($array_product, array('add_ten_pence' => 1), Mage_Core_Model_App::ADMIN_STORE_ID); 

(Teşekkürler https://magento.stackexchange.com/users/146/marius!) Yardımlarınız için

+0

Mükemmel, teşekkürler! – iamgraeme

+1

Bu parçacığı koyduğumda Mage :: app() -> setCurrentStore (Mage_Core_Model_App :: ADMIN_STORE_ID); Benim için çalışır, çünkü kodun bölge ön alanında çalıştırılması gerekir, eğer kontrol cihazınız yönetici ise, gerekli değildir ADMIN_STORE_ID. – jruzafa

+0

Teşekkürler, bu benim tasarruf zamanımı çok optimize etti. BTW: genellikle bir objede mevcut olan tüm yöntemleri nerede bulabilirim? Magento için bu konuda yardımcı olabilecek bir belge yok. – Alan

İlgili konular