2013-06-05 23 views
5

Wenn ich eine Seite mit dem Magentoshop besuchen; Ich erhalte diese Fehlernachricht:getID() auf einem Nicht-Objekt

Anruf auf eine Elementfunktion getId() auf einem Nicht-Objekt in /xxxxx/app/code/core/Mage/Catalog/Model/Product/Type/Configurable/Price.php auf Linie

Ich ging für diese Linie, es ist ein Teil einer Funktion namens getTotalConfigurableItemsPrice. Es ist in einer foreach:

Und er sagt:

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

Und das Attribut Zeug ist das Problem. habe ich versucht, einen var_dump() auf $ Attribut-> getProductAttribute() und erhielt NULL A Var_dump auf ($ Attribut) zeigt das heißt

["_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 
    } 

Was mit dem Attribut ist falsch und wie kann ich es beheben? Wenn ich sage:

$attributeId = 1234; 

statt

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

Der Fehler ist weg, aber ich brauche wahre Werte ..

+0

Haben Sie eine Erweiterung installiert, die die Magento-Produktattributsatzfunktionalität erweitert? – Mufaddal

+0

NEIN, es wurden keine Erweiterungen dieser Art installiert – user1697061

+1

Sie sollten die Antwort unten akzeptieren, da sie Ihre Frage löst. – zigojacko

Antwort

0

ich gleiche Problem wie du, wenn ich meine magento Upgrade hatte, Eine meiner Erweiterungen ist die erweiterte Attribut-Funktionalität, so dass es mir diesen Fehler gibt.

Also endlich hatte ich diese Abfrage ausgeführt.

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

Und war mein Problem gelöst.

Hoffe, das wird Ihnen helfen.

+0

Danke für Ihre Antwort, aber ich bekomme nur: Betroffene Zeilen: 0 Also keine Verbesserung überhaupt:/ – user1697061

9

Ich hatte das gleiche Problem und fand die Lösung dafür.

Problembeschreibung:

Das Problem betrifft konfigurierbare Produkte, die mit Attribut "Default" und konfigurierbare Attribut "Farbe" waren. Ein neuer Attributsatz wurde basierend auf "Standard" erstellt und die Attributfarbe wurde aus diesem Attributsatz entfernt. Anschließend wurden die Attributsätze einiger konfigurierbarer Produkte bei einer Drittanbieter-Erweiterung in die neue geändert. Und das verursachte das Problem.

Lösung:

Fügen Sie das Attribut „Farbe“ auf das Attribut des problematischen Produkt gesetzt.

Ansatz:

Die konfigurierbaren Attribute für ein gegebenes Produkt sind in der Tabelle catalog_product_super_attribute gespeichert. Anhand der ID des Produkts können Sie herausfinden, um welche Attribute es sich handelt.

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 | 
+--------------+----------------+ 

Alles, was Sie tun müssen, ist auf Ihrem Admin gehen Katalog - Attribute - Attribute Sätze verwalten und die Attribute der des problematischen Produkt und reindex gesetzt Attribut hinzufügen.

+0

Toller Fund. Ihre Antwort erlaubt mir, das gleiche Szenario zu lösen, das wir in einem Geschäft haben, aber mit einer breiten Palette von Attributen (nicht nur die Farbe). – zigojacko

Verwandte Themen