Mage :: getModel('catalog / product')-> load($ sku,'sku');上的错误


8

尝试加载产品时,

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

我们得到以下错误:

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

任何想法出什么事了吗?

Answers:


21

您可以使用的一种选择是从sku中找到ID,然后按ID加载。

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

7

就像其他人提到的那样,该Mage_Catalog_Model_Product::load方法获取产品的ID,而不是SKU。可以指定此方法的第二个参数来定义应将哪些属性加载到模型中。它打算用作“按此属性加载”字段。

为了通过属性加载产品,您应该使用:

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

4
警告: loadByAttribute使用集合并按给定属性进行过滤。这意味着,产品加载的观察者将不适用,并且您将没有库存,画廊等完整的数据load()
Fabian Schmengler,2015年

-2

$product= Mage::getModel('catalog/product')->load(123456); 是正确的方法,其中123456是产品的ID。

您可以试试看$product= Mage::getModel('catalog/product')->load('sku', 'mysku');,我认为您的论证顺序错了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.