Magento多商店价格更新脚本 - Mage Eav模型实体属性例外

时间:2014-08-15 23:39:48

标签: php magento

我们正在运营Magento有2家商店,1家店是零售店,另一家是批发店。他们共享一个目录,两个商店之间的分割价格。

我写的脚本只是从批发商网站获取所有定价,并且应该将当前价格更新为反映10%折扣的当前价格。我的脚本抛出以下错误:

  

总产品:51937

     

PHP致命错误:> /var/www/vhosts/mediagiantdesign.com/httpdocs/app/code/core/Mage/Core/Model/Config.php:1353

中未捕获的异常'Mage_Eav_Model_Entity_Attribute_Exception'

我一直在和这个摔跤。我知道magento非常好,而且像这样的微不足道的东西阻止我在我的轨道上有点加重。

由于堆栈跟踪没有附加异常消息,因此难以确定它是什么。它与在负载上设置storeid有关。如果我把它拿出来,或者将它更改为setWebsiteId就行了。但是,它更新两个网站的定价不仅仅是批发方面。

两个附加说明:

  1. 目前,目录中的两个网站价格都相同。这就是为什么你看到我只是从同一产品中获得同样的价格。该脚本应该在商店的批发方面应用初始减少量。

  2. 由于我正在调试,我最后有了休息条件。我确实计划将其删除以进行全面运行 - 任何发现此帖子的人都会发现有用的代码(在修复之后)可以删除它以使其运行完整目录。

  3. 这是我的代码:

    <?php
    
    ini_set("display_errors", 1);
    error_reporting(E_ALL);
    
    require_once 'app/Mage.php';
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
    
    try {
    //get the magento product collection for the Vendors website products
    $vendorproducts = Mage::getModel('catalog/product')->getCollection();
    
    } catch (Exception $ex) {
        echo "Exception thrown.";
        echo $ex->getTraceAsString();
        echo $ex->getMessage(); //no output - weird.
    }
    
    echo "Total Products: " . $vendorproducts->count() . "\r\n";
    
    $count = 0;
    
    foreach($vendorproducts as $product)
    {   
    
        $priceupdate = Mage::getModel('catalog/product')->setStoreId(2)->load($product->getId());
    
        $retailprice = $priceupdate->getPrice();
    
        echo $product->getId() . " - " . ($retailprice - ($retailprice *.10)) . "\r\n";
    
        $priceupdate->setPrice(($retailprice - ($retailprice *.10)));
    
        $priceupdate->setUrlKey(false);
    
        $priceupdate->save();
    
        $count++;
    
        if ($count > 0)
            break;
     }
    
     echo $count . " products updated.\r\n";
    

1 个答案:

答案 0 :(得分:0)

解决。经过一番仔细检查后,我意识到我指定了错误的StoreID。一个无效的商店ID是一个真正的好方法来跳跃magento - 魔鬼在细节。

享受剧本。