Magento getAttributeText()在shell脚本中不起作用

时间:2012-07-03 07:49:03

标签: magento

我有以下代码循环所有产品并回显sku和制造商,但$ manu总是空白,即使我确实得到了正确的sku。

private function organize() {
    $products = Mage::getModel('catalog/product')->getCollection();
    foreach ($products as $product) {
        $sku = $product->getSku();
        $manu = $product->getAttributeText('manufacturer');
        // The following also doesn't work
        //$manu = $product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($product);
        echo $sku." - ".$manu."\n";
    }
}

这是从Mage_Shell_Abstract

扩展的命令行脚本运行

我的代码有什么问题?

大卫

2 个答案:

答案 0 :(得分:3)

我更喜欢@Tim的评论(当然是对他的评价),因为我们不需要再做一些产品(当我们从我们的系列中做到这一点时会自动加载)

不会自动选择制造商属性,因为它未存储在主表(catalog_product_entity)中。

$products = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToSelect('manufacturer');

答案 1 :(得分:-1)

在此处迭代集合时,不会加载EAV属性。试试这个:

$products = Mage::getModel('catalog/product')->getCollection();
    foreach ($products->getAllIds() as $productId) {
        $product = Mage::getModel('catalog/product');
        $product->load($productId);
        $sku = $product->getSku();
        $manu = $product->getAttributeText('manufacturer');
        echo $sku." - ".$manu."\n";
    }