【问题标题】:Magento Bulk update attributesMagento 批量更新属性
【发布时间】:2012-04-27 18:04:16
【问题描述】:

我错过了按 SKU/UPC 批量更新属性的 SQL。

运行 EE1.10 仅供参考

我的所有其他代码都在工作,但我不确定是谁/什么/为什么 实际上更新了我们的属性,但一直找不到它们,我的逻辑 是

  1. 打开 CSV 并将所有 sku 和关联的属性抓取到二维数组中
  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
     * 
     */

查看我对工作生产代码的回复。希望这对 Magento 社区中的某个人有所帮助。

【问题讨论】:

    标签: api magento attributes sku


    【解决方案1】:

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

    在 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);
    

    此代码负责更新您想要的所有产品 ID,一次只更新任何单个商店的更改属性。

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

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

    array('price' => 10.00, 'weight' => 5)
    

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

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

    【讨论】:

    • 因此,如果我要更新产品类(显然与事物没有内部关系,只是外部影响),这有什么关系。
    • 如果您选择在此处放置脚本,那么可以。
    • 您好,您能否提供有关如何在“mycode.php”或其他脚本中实现此功能的信息/代码?
    【解决方案2】:

    一般更新查询如下:

    UPDATE 
      catalog_product_entity_[backend_type] cpex 
    SET
      cpex.value = ? 
    WHERE cpex.attribute_id = ? 
      AND cpex.entity_id = ?
    

    为了找到与属性关联的[backend_type]:

    SELECT 
      backend_type
    FROM
      eav_attribute
    WHERE entity_type_id =
      (SELECT
        entity_type_id
      FROM
        eav_entity_type
      WHERE entity_type_code = 'catalog_product')
    AND attribute_id = ?
    

    您可以从以下博客文章中获得更多信息:
    http://www.blog.magepsycho.com/magento-eav-structure-role-of-eav_attributes-backend_type-field/

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      相关资源
      最近更新 更多