Ich versuche, den Preis auf viele Produkte (mehr als 10.000) zu aktualisieren. Die Art und Weise, wie ich das gerade mache, ist extrem zeitaufwändig. Was ist der beste Weg, um alle Produkte durchzugehen und die meisten zu aktualisieren?
Vielen Dank
magento-1.9
product
products-management
eftihios1986
quelle
quelle
Antworten:
Hallo Magento, gib ein Attribut mit folgendem Code an
Beispiel:
Verwenden der Produktkollektion:
quelle
Mage::getSingleton('catalog/product_api')->update();
undMage::getSingleton('catalog/product_action')->updateAttributes()
. product_api dauerte im Durchschnitt 1,7 Sekunden und product_action dauerte im Durchschnitt 1,0 Sekunden. jedoch$product->getResource()->saveAttribute()
nahm avg 0,04 Sekunden auf durchschnittl. Vielen Dank!$product->getResource()->saveAttribute
Handlung umkreisen. DANKE!!Schreiben Sie eine SQL-Abfrage.
Zweitbester Weg (und der, den ich empfehle):
\Mage_Catalog_Model_Resource_Product_Action::updateAttributes
Code-Beispiel von u_maxx:
Multiselects werden normalerweise als durch Kommas getrennte ganze Zahlen gespeichert, z
27,42,4711
. Wenn Sie also den Wert ändern1
, gehen die anderen Werte verloren. Aber was Sie tun können, ist,CONCAT(value, ',1')
dass Sie den neuen Wert am Ende durch ein Komma trennen. Ich denke, auch wenn Sie zwei Mal einen Wert hinzufügen, ist dies kein Problem, da Magento ihn beim nächsten Speichern filtert und den zweiten Wert ignoriert.quelle
<?php $allProductIds = Mage::getModel('catalog/product')->getCollection()->getAllIds(); $attributeCode = 'some_eav_attribute'; $attributeValue = NULL; $attrData = array( $attributeCode => $attributeValue ); $storeId = 0; Mage::getSingleton('catalog/resource_product_action')->updateAttributes($allProductIds, $attrData, $storeId);
Mage::getSingleton('catalog/resource_product_action')
umMage::getModel('catalog/product_action')
mit den exakt gleichen oben genannten Parametern.10k Produkte verwenden SQL. EAV trübt nur das Wasser. Pro Frage ist der schnellste Weg.
Suchen Sie attribute_id
Update mit
attribute_id
obiger Abfrage gefunden.Ich nehme an, Sie könnten mit update eine Unterauswahl treffen, aber der Einfachheit halber sind zwei SQL-Abfragen am einfachsten zu verstehen.
HINWEIS: Es
entity_type_id = 4
handelt sich meistens um die Produkt-EAV-Einträge. Wenn Sie Kategorien- oder Kundenattribute massenweise aktualisieren müssen, unterscheidet sich dies ebenso wie die Tabelle, die basierend auf der Art des zu aktualisierenden Attributs aktualisiert wird. Auch wenn Sie ein Multi-Store-Setup haben, achten Sie darauf und beachten Sie die Bedingungenstore_id
quelle
Aufgrund der obigen Antwort von Fabian können Sie mehrere Felder gleichzeitig aktualisieren. Das folgende Beispiel hat nur 2 (auf Lager, Lagerstatus), aber Sie können so viele verwenden, wie Sie möchten.
quelle