通过产品收集迭代的最佳方法
-
22-10-2019 - |
题
以下哪种方法是”更轻松“在Magento平台上,特别是数据库?方法1使用对数据库进行单个调用来检索集合,然后在结果上迭代。方法2在每次运行时在循环中检索产品。
方法1
$products = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*') // <- obv a bad idea
->addAttributeToFilter(
'sku', array('in' => $productSkus)
)
->load();
foreach ($products as $product) {
echo $product->getName();
}
与将产品对象获取在循环中:
方法2
$products = Mage::getModel('catalog/product');
foreach ($array as $key => value) {
$product = $products->load('PROD001', 'sku');
}
显然,此代码只是示例。考虑到数据集可能包含数百或数千种产品,哪种方法是”正确的“方式,还是我缺少另一个?
解决方案
方法1将花费更少的时间来循环,但会消耗大量内存。
您正在寻找的另一个选项是使用:
Mage::getSingleton('core/resource_iterator')
这描述了它: 是否有可能在本机上迭代分页上的洋红色收藏?
确保注意Kalen Jordan的批次迭代器https://gist.github.com/kalenjordan/5483065
这可以用来优雅地完成非常大的数据集。