【问题标题】:getID() on a non-object非对象上的 getID()
【发布时间】:2013-06-01 07:36:23
【问题描述】:

当我使用 magentoshop 访问页面时;我收到此错误消息:

在线/xxxxx/app/code/core/Mage/Catalog/Model/Product/Type/Configurable/Price.php中的非对象上调用成员函数getId() 85

我前往那条线,它是名为 getTotalConfigurableItemsPrice 的函数的一部分。 它在一个 foreach 中:

它说:

foreach ($attributes as $attribute) {
    $attributeId = $attribute->getProductAttribute()->getId();

而属性的东西就是问题所在。 我在 $attribute->getProductAttribute() 上尝试了 var_dump() 并收到 NULL var_dump on($attribute) 显示即

["_data":protected]=>
  array(5) {
    ["product_super_attribute_id"]=>
    string(4) "3845"
    ["product_id"]=>
    string(8) "10001563"
    ["attribute_id"]=>
    string(3) "135"
    ["position"]=>
    string(1) "0"
    ["product_attribute"]=>
    NULL
  }

属性有什么问题,我该如何解决? 如果我说:

$attributeId = 1234;

而不是

$attributeId = $attribute->getProductAttribute()->getId();

错误消失了,但我需要真实值..

【问题讨论】:

  • 您是否安装了任何扩展 magento 产品属性集功能的扩展?
  • 否,没有安装这种方式的扩展
  • 您应该接受下面的答案,因为它可以解决您的问题。

标签: magento attributes


【解决方案1】:

我遇到了同样的问题并找到了解决方案。

问题描述:

此问题会影响属性集“默认”和可配置属性“颜色”的可配置产品。基于“默认”创建了一个新属性集,并从该属性集中删除了属性颜色。之后通过一些第 3 方扩展,一些可配置产品的属性集被更改为新的。这就是问题的根源。

解决方案:

将属性“color”添加到问题产品的属性集中。

方法:

给定产品的可配置属性存储在表catalog_product_super_attribute 中。使用产品的 id 可以找出这些属性是什么。

mysql> select * from catalog_product_super_attribute where product_id=1826;
+----------------------------+------------+--------------+----------+
| product_super_attribute_id | product_id | attribute_id | position |
+----------------------------+------------+--------------+----------+
|                       1826 |       1826 |           92 |        0 |
|                       2683 |       1826 |          209 |        0 |
+----------------------------+------------+--------------+----------+
mysql> select attribute_id,attribute_code from eav_attribute where (attribute_id=92 or attribute_id=208);
+--------------+----------------+
| attribute_id | attribute_code |
+--------------+----------------+
|           92 | color          |
|          208 | color_mutsy    |
+--------------+----------------+

您所要做的就是去您的管理员目录 - 属性 - 管理属性集并将属性添加到有问题的产品的属性集中并重新索引。

【讨论】:

  • 很棒的发现。您的回答让我解决了我们在商店中遇到的相同场景,但属性范围很广(不仅仅是颜色)。
【解决方案2】:

当我升级我的 magento 时,我遇到了和你一样的问题,我的扩展之一是扩展属性集功能,所以它给了我这个错误。

所以最后我运行了这个查询。

update eav_entity_type set additional_attribute_table='catalog/eav_attribute',entity_attribute_collection='catalog/product_attribute_collection' where entity_type_id=4;

我的问题就解决了。

希望这会对你有所帮助。

【讨论】:

  • 感谢您的回答,但我只是得到:受影响的行:0 所以根本没有改善:/
猜你喜欢
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多