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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top