2012-06-07 17 views
14

oggi sto combattendo con Magento ancora :) e ho trovato una differenza traMagento carico prodotto - differenza tra loadByAttribute e di carico metodi

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

e

$product = Mage::getModel('catalog/product')->load($product_id); 

Qualcuno mi può exaplain una differenza tra questi due approcci? Ho scoperto che quando sto caricando un prodotto da sku, quando cerco di ri-salvarlo con i dati modificati, ottengo l'eccezione di errore "Varien_Exception" con messaggio "Metodo non valido Varien_Object :: save in app \ code \ core \ Mage \ CatalogInventory \ Model \ Observer.php (153): Varien_Object -> __ call ('save', Array) è vero perché una volta che si prova a caricare da sku, un altro osservatore imposta la voce del prodotto come Varien_Object, che sembra una trappola o io solo non lo capisco abbastanza, ma

Faccio quotidianamente lo sviluppo di Magento sin dall'inizio, quindi so molto sul sistema e questo è nuovo per me. Grazie in anticipo, Jaro.

+0

wow grazie ha avuto lo stesso problema, caricandolo ora da sku e successivamente da id – wutzebaer

+0

Grazie. Il primo metodo ha funzionato per me e credo che il secondo metodo non accetti le variabili? ha funzionato quando ho codificato un codice SKU. –

risposta

17

Interessante. Mentre entrambi i metodi collegheranno una singola istanza di modello di prodotto con dati EAV a pieno carico (a condizione che il terzo parametro di loadByAttribute() non sia passato o sia *), gli osservatori che aggiungono dati relativi allo stock sono diversi per prodotti e collezioni di prodotti, tuttavia entrambi gli oggetti di informazione stock vengono aggiunti alla chiave dati del prodotto "stock_item". È discutibile, ma sembra un insetto. Penserei che lo Mage_CatalogInventory_Model_Observer::saveInventoryData() o lo Mage_CatalogInventory_Model_Observer::_prepareItemForSave() gestirà questo.

È possibile risolvere questo problema impostando completamente l'elemento stock prodotto sull'istanza del prodotto utilizzando l'oggetto stock_item.

+0

Sembra una specie di bug, uno crea una raccolta, ci sono prodotti con informazioni sugli stock contraffatti e una volta che si desidera cambiare, fallisce. Mi ci sono voluti 3 giorni per capirlo, perché sta accadendo davvero in profondità e non lo sospetti e non te lo aspetti. Ho bisogno di condividere tali informazioni con altri, risparmiando tempo e vite :) – Jaro

+2

[Diventa un collaboratore Magento] (http://www.magentocommerce.com/images/uploads/MCA-Magento-Contributor-Agreement-230909.pdf): -) – benmarks

+0

sembra che accada ancora in 1.8? Ho affrontato quel problema oggi. – Nikitas

Problemi correlati