Я пытаюсь обновить цену для многих продуктов (более 10.000). То, как я это делаю сейчас, очень трудоемко. Какой лучший способ просмотреть все продукты и обновить большинство из них?
Благодарность
magento-1.9
product
products-management
eftihios1986
источник
источник
Ответы:
Привет Magento предоставить атрибут с помощью кода ниже
Пример:
Использование коллекции продуктов:
источник
Mage::getSingleton('catalog/product_api')->update();
иMage::getSingleton('catalog/product_action')->updateAttributes()
. product_api занял 1,7 секунды в среднем, а product_action - 1,0 секунды в среднем. Тем не менее,$product->getResource()->saveAttribute()
взял на 0,04 секунды в среднем. Благодарность!$product->getResource()->saveAttribute
действия. СПАСИБО!!Написать запрос SQL.
Второй лучший способ (и тот, который я рекомендую):
\Mage_Catalog_Model_Resource_Product_Action::updateAttributes
Пример кода от u_maxx:
Мультиселекты обычно сохраняются как целые числа, разделенные запятыми, например
27,42,4711
. Поэтому, если вы измените значение, чтобы сказать1
, другие значения будут потеряны. Но то, что вы можете сделать, это что-то вродеCONCAT(value, ',1')
средства добавления нового значения в конец, разделенного запятой. Я думаю, что даже если вы добавите значение два раза, это не проблема, потому что Magento фильтрует его при следующем сохранении элемента и игнорирует второе значение.источник
<?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')
наMage::getModel('catalog/product_action')
те же параметры, что указаны выше.10 тыс. Продуктов, используйте SQL. EAV просто мутит воду. За вопрос самый быстрый способ.
Найти attribute_id
Обновление с найденным
attribute_id
выше запросом.Я полагаю, вы могли бы сделать выборку с обновлением, но для простоты два SQL-запроса проще всего понять.
ПРИМЕЧАНИЕ:
entity_type_id = 4
чаще всего это продукт EAV записей. В случае, если вам необходимо массовое обновление категории или атрибутов клиента, это будет отличаться, также как и таблица, которая обновляется в зависимости от типа атрибута, который вы обновляете. Кроме того, если у вас есть настройка нескольких магазинов, убедитесь, что обратите внимание и условияstore_id
источник
В дополнение к ответу Фабиана выше, вы можете обновить несколько полей одновременно. В приведенном ниже примере есть только 2 (на складе, на складе), но вы можете использовать столько, сколько хотите.
источник