Bester Weg, um durch Produktsammlung zu iterieren
-
22-10-2019 - |
Frage
Welche dieser Methoden ist "Einfacher"Auf der Magento -Plattform, insbesondere in der Datenbank? Methode 1 verwendet einen einzelnen Aufruf in der Datenbank, um die Sammlung abzurufen, und dann über das Ergebnis iteriert. Methode 2 ruft das Produkt in den Schlaufe bei jedem Lauf ab.
Methode 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();
}
Gegen das Produktobjekt in die Schleife:
Methode 2
$products = Mage::getModel('catalog/product');
foreach ($array as $key => value) {
$product = $products->load('PROD001', 'sku');
}
Offensichtlich ist dieser Code nur ein Beispiel. In Anbetracht des Datensatzes könnte viele Hundert oder Tausende von Produkten enthalten sein, welche Methode die "ist"Rechts"Way, oder fehlt mir ein anderer?
Lösung
Methode 1 wird viel weniger Zeit in Anspruch nehmen, um durchzuschlitzen, wird aber viel Speicher verbrauchen.
Eine weitere Option, die wahrscheinlich diejenige ist, die Sie suchen, ist die Verwendung des::
Mage::getSingleton('core/resource_iterator')
Dies beschreibt es irgendwie: Ist es möglich, über Magento -Kollektionen mit nativer Pagination zu iterieren?
Achten Sie darauf, auf den batchierten Iterator von Kalen Jordan zu achtenhttps://gist.github.com/kalenjordan/5483065
Dies kann verwendet werden, um sehr große Datensätze elegant zu erreichen.