1

我有以下代码来遍历所有产品并回显 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 扩展的命令行脚本运行的

我的代码可能有什么问题?

大卫

4

2 回答 2

4

我更喜欢@Tim 的评论(当然是他的功劳),因为我们不需要再加载产品(当我们从我们的集合中执行 foreach 时它会自动加载)

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

$products = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToSelect('manufacturer');
于 2012-09-25T01:39:27.400 回答
-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";
    }
于 2012-07-03T08:11:07.493 回答