Errore su Mage :: getModel ('catalogue / product') -> load ($ sku, 'sku');


8

quando si tenta di caricare un prodotto,

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

viene visualizzato il seguente errore:

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

Qualche idea di cosa non va?

Risposte:


21

Un'opzione a tua disposizione sarebbe quella di trovare l'ID dallo sku e quindi caricarlo per ID.

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

7

Come menzionato da altri, il Mage_Catalog_Model_Product::loadmetodo prende l'ID del prodotto, non lo SKU. Il secondo argomento di questo metodo può essere specificato per definire quali attributi devono essere caricati nel modello. È non deve essere utilizzata come "carico da questo attributo" campo.

Per caricare un prodotto da un attributo, è necessario utilizzare:

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

4
Avviso: loadByAttribute utilizza una raccolta e filtri in base all'attributo fornito. Ciò significa che gli osservatori per il caricamento del prodotto non si applicano e non si hanno i dati completi con magazzino, galleria ecc. Come si farebbe con load().
Fabian Schmengler,

-2

$product= Mage::getModel('catalog/product')->load(123456); è il metodo giusto, in cui 123456 è l'id del prodotto.

Potresti provarlo $product= Mage::getModel('catalog/product')->load('sku', 'mysku');invece, penso che l'ordine del tuo argomento fosse sbagliato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.