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


Magento Multi Store Price Update Script - Mage Eav Model Entity Attribute Exception

我们经营Magento有2家店,一家是零售,另一家是批发。它们共享一个目录,并在两个商店之间分割定价。

我正在编写的脚本只是从批发商网站获取所有定价,并且应该将当前价格更新为反映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. 由于我正在调试,我在最后有中断条件。我确实计划在完整的运行中删除它-任何发现这篇文章并发现代码有用的人(当然是在修复之后)都可以删除它以运行完整的目录。

下面是我的代码:
<?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";

解决。经过反复检查,我意识到我指定了错误的StoreID。一个无效的商店id是一个很好的方式来绊倒magento -魔鬼是在细节。

欣赏剧本