2012-07-03 2 views
1

다음 코드는 모든 제품을 반복하고 sku 및 제조업체를 표시하지만 sku를 올바르게 가져 오더라도 $ manu는 항상 비어 있습니다.Magento getAttributeText() 쉘 스크립트에서 작동하지 않습니다

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

에서 연장 명령 줄 스크립트로 실행?

다윗은

+3

AddAttributeToSelect? –

답변

3

을 우리가 (우리가 우리의 컬렉션에서 foreach 문을 수행 할 때이 자동으로로드됩니다) 제품의 또 다른 부하를 수행 할 필요가 없습니다로서 나는 (그를 위해 학점의) @ 팀의 코멘트를 선호

제조업체 특성은 주 테이블 (catalog_product_entity)에 저장되어 있지 않으므로 자동으로 선택되지 않습니다.

$products = Mage::getModel('catalog/product')->getCollection() 
    ->addAttributeToSelect('manufacturer'); 
-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"; 
    } 
+0

감사. 이것은 잘 작동합니다. – MacroMan

+0

이것은 데이터베이스에 엄청난 피해를 줄 것입니다. 데이터베이스에서 제품을 선택한 후에는이를 무시한 다음 전체 제품 및 해당 특성을로드하는 데 더 많은 비용이 드는로드를 수행합니다. 컬렉션을 사용하지만 허용 된 대답과 마찬가지로 속성을 추가하십시오. –

관련 문제