Estoy buscando el método más rápido y confiable para la actualización masiva de atributos. A continuación se detallan los métodos que conozco pero no sé con qué debo ir.
$store_id = 0;
Mage::getSingleton('catalog/product_action')->updateAttributes(
array($product_id),
array('attribute_code' => $attribute_code),
$store_id
);
o
$product->setData($attribute_code, 1234);
$product->getResource()->saveAttribute($product, $attribute_code);
magento-1.8
magento-enterprise
product-attribute
best-practice
Deepak Mallah
fuente
fuente
load
. que cualquier cosa menos rápido Por ejemplo, en el método 2, la primera línea con la carga del producto es inútil. No estás usando en$product
ningún lado.En realidad, hay 3 formas de actualizar un atributo en un producto sin guardar el producto completo. Dependiendo del código / requisitos, uno puede ser más rápido que el otro.
Método 1:
Método 2:
Método 3: (más rápido)
Todos los métodos anteriores son mucho más rápidos y ahorran todo el producto de todos modos, existen algunas diferencias importantes de rendimiento:
Method 1
:Method 2
:(puede pasar múltiples productos y múltiples atributos)
Method 3
:(por lo que es un enfoque mixto entre el método 1 y el 2)
El método 3 es el más flexible de todos modos, tendrá que reindexar esos productos / atributos manualmente. (para actualizarlos en la interfaz)
Puede ser útil si desea actualizar muchos productos rápidamente y luego llamar al reindex al final.
(si usa el método 2, se llama a un reindex para cada producto después de la actualización y estas llamadas múltiples hacen que todo el proceso sea lento)
Para reindexar manualmente un solo producto, consulte las funciones proporcionadas por Mage_Catalog_Model_Product_Flat_Indexer como:
updateAttribute($attributeCode, $store = null, $productIds = null)
updateProduct($productIds, $store = null)
fuente
catalog_product_entity
.value_id
DESDEcatalog_product_entity
DONDE (entity_type_id = 4 AND attribute_id = '68 'AND entity_id = '29') `` `no esperaba eso. Se ejecuta en 1.9.3.2Actualizar
¿"Actualización masiva de atributos" para atributos o productos?
Piense que la actualización de múltiples atributos ya está respondida, pero para los productos esto puede ser útil ...
Si desea actualizar productos de la colección, no debe hacer esto ...
Esto enviará eventos, reconstruirá precios e índices. Con esto no se omiten eventos (y algunas otras cosas) y es mucho más rápido.
Para evitar actualizaciones de precios, puede agregar ...
Para deshabilitar / habilitar reindex sobre la marcha, eche un vistazo a esto ... https://github.com/Flagbit/Magento-ChangeAttributeSet/commit/676f3af77fec880bc64333403675d183e8639fae
Y también vaciar el caché antes de la actualización masiva (producto) puede aumentar el rendimiento ...
Algunos números de depuración aquí: https://github.com/Flagbit/Magento-ChangeAttributeSet/issues/16
Mage::getSingleton('catalog/product_action')->updateAttributes(...)
parece que no es el método más rápido ... al menos no con la configuración de mutlistore y las tablas planas activadas ...saveAttribute()
updateAttributes()
updateAttributes()
(recurso singleton)fuente
updateAttributes() (resource singleton)
toma el valor de administrador real? o la identificación del elemento desplegable? (de alguna manera siempre no obtenemos ningún valor / valor vacío usando este método, es decir, nada seleccionado