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

何が問題になっているのですか?

回答:


21

利用できるオプションの1つは、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メソッドはSKUではなく製品のIDを取ります。このメソッドの2番目の引数を指定して、モデルにロードする属性を定義できます。「この属性によるロード」フィールドとして使用するためのものではありません

属性によって商品をロードするには、以下を使用する必要があります。

$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');代わりにそれを試すことができますが、私はあなたの議論の順序が間違っていたと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.