Kesalahan pada Mage :: getModel ('katalog / produk') -> memuat ($ sku, 'sku');


8

ketika mencoba memuat suatu produk,

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

kami mendapatkan kesalahan berikut:

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

Ada ide apa yang salah?

Jawaban:


21

Satu opsi yang tersedia bagi Anda adalah menemukan ID dari sku, dan kemudian memuat berdasarkan ID.

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

7

Seperti yang disebutkan oleh orang lain, Mage_Catalog_Model_Product::loadmetode ini mengambil ID produk, bukan SKU. Argumen kedua dari metode ini dapat ditentukan untuk menentukan atribut mana yang harus dimuat ke dalam model. Itu tidak dimaksudkan untuk digunakan sebagai bidang "memuat oleh atribut ini".

Untuk memuat produk dengan atribut, Anda harus menggunakan:

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

4
Peringatan: loadByAttribute menggunakan koleksi dan filter berdasarkan atribut yang diberikan. Ini berarti, pengamat untuk memuat produk tidak berlaku dan Anda tidak memiliki data lengkap dengan stok, galeri, dll. Seperti yang Anda miliki load().
Fabian Schmengler

-2

$product= Mage::getModel('catalog/product')->load(123456); adalah metode yang tepat, di mana 123456 adalah id produk.

Anda bisa mencobanya $product= Mage::getModel('catalog/product')->load('sku', 'mysku');, saya pikir urutan argumen Anda salah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.