我有以下代码循环所有产品并回显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
扩展的命令行脚本运行我的代码有什么问题?
大卫
答案 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";
}