【问题标题】:magento - product model and product_collection items have different properties in flat catalog modemagento - 产品模型和 product_collection 项目在平面目录模式下具有不同的属性
【发布时间】:2012-07-19 11:14:14
【问题描述】:

我只知道如果我有一个 product_collection(例如目录页面中生成的集合)

//事件目录_product_collecion_after_load $productCollection = $observer->getEvent()->getCollection();

如果我从这个集合中取出一个项目并将它与相关模型进行比较 $_product = Mage::getModel('catalog/product')->load($item->getEntityId());

同一实体的这 2 个实例具有不同的属性!

我在平面目录模式下工作。 为什么集合的物品与产品型号不一样? 我想知道这是否是正确的行为,以及是否如何在两个对象中具有相同的属性!

抱歉,magento 很黑 :(

【问题讨论】:

    标签: magento collections properties


    【解决方案1】:

    对于使用 flat_mode 的 catalog_product_collection 更为复杂,将属性添加到项目的集合中。 产品项目中的属性是catalog_product_flat 表和产品实体的EAV 属性之间的连接。

    所以,在产品型号中来自:

    • collection 我们在 catalog_product_flat 表和 EAV 属性之间加入了属性
    • getModel('catalog/product') 我们拥有所有 EAV 属性

    在这些属性之上,我们肯定还会有其他属性,我想是在其他地方添加的。

    现在,catalog_product_flat 中有哪些属性? 简单的是您在 magento 管理属性中检查为“用于产品列表”的属性! :)

    但在某些属性中,您无法更改此选项,具体取决于您选择的类型。属性类型 Image 没有“Used in Product Listing”标志,所以如果您想在产品列表中使用新图像,则必须修改 catalog_eav_attribute。

    好吧,我花了 2 天时间才知道这一点,我希望它对其他不幸的 magento 开发人员有用。 :)

    Magento 1.5 版

    【讨论】:

      【解决方案2】:

      因为Mage::getModel('catalog/product')->load($item->getEntityId()); 加载产品的所有属性,而集合仅加载与情况不同的指定属性。您可以在 app/code/core/Mage/Catalog/etc/config.xml 找到 (CTRL+F) 类似 attributes 的内容,然后您将看到产品集合的所有默认加载属性的列表。您还可以在模块中或直接在目录 config.xml 中更改它们。但是除了调试之外,在app/code/core/Mage/Catalog/etc/config.xml 更改某些内容并不是最好的主意

      【讨论】:

      • 是的,太好了!我有平面 catalog_product 表,我现在看到我要检索“图像”的属性不在此表中!但这存在于产品的 EAV 结构中,它也应该存在于平板电脑中……有问题! :(
      猜你喜欢
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多