Fehler bei Mage :: getModel ('Katalog / Produkt') -> Laden ($ sku, 'sku');


8

Wenn Sie versuchen, ein Produkt zu laden,

$foundProduct =  Mage::getModel('catalog/product')->load($sku, 'sku');

Wir erhalten den folgenden Fehler:

Fatal error:
Uncaught exception 'Exception' with message 'Warning: Invalid argument supplied for foreach()
in app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 954' in app/code/core/Mage/Core/functions.php:245 Stack trace:
#0 app/code/core/Mage/Eav/Model/Entity/Abstract.php(954): mageCoreErrorHandler(2, 'Invalid argumen...', '/var/www/magent...', 954, Array)
#1 app/code/core/Mage/Catalog/Model/Resource/Abstract.php(698): Mage_Eav_Model_Entity_Abstract->load(Object(Mage_Catalog_Model_Product), '120x180 ES-bale...', 'sku')
#2 app/code/core/Mage/Core/Model/Abstract.php(225): Mage_Catalog_Model_Resource_Abstract->load(Object(Mage_Catalog_Model_Product), '120x180 ES-bale...', 'sku')
#3 updatemagento.php(197): Mage_Core_Model_Abstract->load('120x180 ES-bale...', 'sku')
#4 {main} thrown in app/code/core/Mage/Core/functions.php on line 245

Irgendwelche Ideen, was falsch läuft?

Antworten:


21

Eine Option, die Ihnen zur Verfügung steht, besteht darin, die ID in der SKU zu finden und dann nach ID zu laden.

$product = Mage::getModel('catalog/product');
$id = Mage::getModel('catalog/product')->getResource()->getIdBySku('your sku');
if ($id) {
    $product->load($id);
}

7

Wie von anderen erwähnt, verwendet die Mage_Catalog_Model_Product::loadMethode die ID des Produkts, nicht die SKU. Das zweite Argument dieser Methode kann angegeben werden, um zu definieren, welche Attribute in das Modell geladen werden sollen. Es ist nicht dazu gedacht, als Feld "Von diesem Attribut laden" verwendet zu werden.

Um ein Produkt über ein Attribut zu laden, sollten Sie Folgendes verwenden:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);

4
Warnung: loadByAttribute Verwendet eine Sammlung und filtert nach dem angegebenen Attribut. Dies bedeutet, dass die Beobachter für das Laden von Produkten nicht zutreffen und Sie nicht die vollständigen Daten mit Lagerbestand, Galerie usw. haben, wie Sie es mit hätten load().
Fabian Schmengler

-2

$product= Mage::getModel('catalog/product')->load(123456); ist die richtige Methode, wobei 123456 die ID des Produkts ist.

Sie könnten das $product= Mage::getModel('catalog/product')->load('sku', 'mysku');stattdessen versuchen , ich denke, die Reihenfolge Ihrer Argumentation war falsch.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.