Magento Bulk更新属性

ehi*_*ime 7 api attributes magento skus

嘿伙计们,我错过了SKU/UPC对这个Bulk更新属性的SQL

运行EE1.10 FYI

我已经完成了所有其余代码,但我不确定实际更新属性的人/原因/原因,并且无法找到它们,我的逻辑是

  1. 打开CSV并将所有skus和关联的attrib抓取到2d数组中
  2. 将SKU解析为entity_id
  3. 获取entity_id和属性并运行更新直到完成
  4. 从周五开始休息一天

这是我的(差不多完成的)代码,我非常感谢一些帮助.

    /**
     * FUNCTION: updateAttrib
     * 
     * REQS: $db_magento
     * Session resource
     * 
     * REQS: entity_id
     * Product entity value
     * 
     * REQS: $attrib
     * Attribute to alter
     * 
     */
Run Code Online (Sandbox Code Playgroud)

请参阅我对工作生产代码的回复.希望这有助于Magento社区的某些人.

Jos*_*ton 24

虽然这在技术上可行,但您编写的代码只是您应该执行此操作的最后一种方式.

在Magento中,您确实应该使用代码提供的模型,而不是自己编写数据库查询.

在您的情况下,如果您需要更新1个或多个产品的属性,有一种方法可以非常快速地(非常安全地)执行此操作.

如果您查看:/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/Action/AttributeController.php,您会发现该控制器专用于快速更新多个产品.

如果你查看saveAction()函数,你会发现以下代码行:

Mage::getSingleton('catalog/product_action')
    ->updateAttributes($this->_getHelper()->getProductIds(), $attributesData, $storeId);
Run Code Online (Sandbox Code Playgroud)

此代码负责更新所需的所有产品ID,一次只更新任何一个商店的已更改属性.

第一个参数基本上是产品ID数组.如果您只想更新单个产品,只需将其放入数组即可.

第二个参数是一个数组,其中包含要为给定产品更新的属性.例如,如果您想将价格更新为10美元并将权重更新为5,则可以传递以下数组:

array('price' => 10.00, 'weight' => 5)
Run Code Online (Sandbox Code Playgroud)

最后,第三个也是最后一个属性是您希望这些更新发生的商店ID.这个数字很可能是1或0.

我会玩这个函数调用并使用它而不是编写和维护自己的数据库查询.