La meilleure façon pour itérer Collection Produit
-
22-10-2019 - |
Question
Laquelle de ces méthodes est " plus facile " sur la plate-forme Magento, en particulier la base de données? Méthode 1 utilise un appel unique à la base de données pour récupérer la collection, et puis itère sur le résultat. Méthode 2 extrait le produit à l'intérieur de la boucle sur chaque essai.
Méthode 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();
}
Versus obtenir l'objet produit à l'intérieur de la boucle:
Méthode 2
$products = Mage::getModel('catalog/product');
foreach ($array as $key => value) {
$product = $products->load('PROD001', 'sku');
}
Il est évident que ce code est seulement un échantillon. Compte tenu de l'ensemble de données peut contenir plusieurs centaines ou des milliers de produits, ce procédé est le « droite » façon, ou est-il une autre que je suis absent?
La solution
Méthode 1 va prendre beaucoup moins de temps à la boucle à travers, mais consomme beaucoup de mémoire.
Une autre option qui est probablement celui que vous cherchez utilise le:
Mage::getSingleton('core/resource_iterator')
décrit en quelque sorte: est-il possible d'itérer sur des collections Magento avec nativement en page?
Assurez-vous de faire attention à Iterator par Kalen lots # Jordan https://gist.github.com/kalenjordan/5483065
Ceci peut être utilisé pour réaliser des ensembles de données très grande élégance.