我有一个近90000产品的目录.我需要检索没有图像关联的所有产品sku.使用sql查询,我可以获得没有图像的所有产品的id列表.从该ID我需要获得产品sku.所以,我有一个$ ids数组,所有产品都没有图像(接近60000).
我试图通过magento api使用简单的东西获得所有相应的skus:
foreach ($ids as $id){
$product = Mage::getModel('catalog/product')->load($id);
echo $product->getSku()."\n";
}
Run Code Online (Sandbox Code Playgroud)
但这会导致PHP致命错误:允许的内存大小...(内存大小为1024Mb,我无法更改).
我的问题是:从这个$ ids数组,我怎样才能获得所有相应的sku而不会导致内存大小错误?是否有更轻松的方法来获得具有产品ID的产品属性?
谢谢!
cec*_*lab 14
目前,您正在加载大量不需要的产品数据,这会导致致命错误.在您的情况下,您只需要产品sku.我建议使用Magento系列.
我想,以下代码段对您有用:
$productsCollection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToFilter('entity_id', array('in' => $ids));
foreach($productsCollection as $product) {
echo $product->getSku();
}
Run Code Online (Sandbox Code Playgroud)
Magento会自动将sku添加到选择中,但请注意,有时您可能希望获得一些自定义产品属性,例如代码为"color"的属性.然后你需要添加->addAttributeToSelect('color'),代码将如下所示:
$productsCollection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToFilter('entity_id', array('in' => $ids))
->addAttributeToSelect('color');
foreach($productsCollection as $product) {
echo $product->getSku();
echo $product->getColor();
}
Run Code Online (Sandbox Code Playgroud)
如果您想获得所有产品属性,可以使用 - > addAttributeToSelect('*')