1

すべての製品をループしてSKUと製造元をエコーする次のコードがありますが、SKUを正しく取得したとしても、$manuは常に空白です。

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 に答える