Zusammenfassung
Ich wollte ein Produkt von einer SKU laden. Es gibt viele Artikel, Blog-Beiträge, Stapelüberlaufergebnisse usw. Ich möchte nur wissen, warum es so schwierig sein muss, ein Produkt von einer SKU zu laden.
// This method does not work (Of all, I expect this to work)
$product = Mage::getModel('catalog/product')->loadBySku($sku);
// These do not work either
$product = Mage::getModel('catalog/product')->loadByAttribute($sku, 'sku');
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
// This does not work
$product = Mage::getModel('catalog/product')->load($sku, 'sku');
Natürlich erwarte ich zu diesem Zeitpunkt viel zu viel von Magento, um simple
etwas zu tun (einfach ist ein Konzept, mit dem Magento offensichtlich nicht vertraut ist).
// This works:
$product = Mage::getModel('catalog/product');
$product->load($product->getIdBySku($sku));
loadByAttribute()
Sie, dass Sie nicht alle zugehörigen Produktdaten erhalten. Es werden Dinge wie der Bestand und die Medienobjekte fehlen.Ich habe die Ausführungszeit für die verschiedenen Methoden getestet, die ich gesehen habe, um ein Produkt von der SKU zu laden. Dies ist die effizienteste:
Tests:
Testergebnisse (in Sekunden):
quelle
Um ein Produkt nach Artikelnummer in Magento zu laden, können Sie den folgenden Code verwenden:
Ich habe das immer benutzt und es funktioniert perfekt. Wenn Sie mehrere Produkte laden möchten, versuchen Sie dies
Referenzquelle http://magentoexplorer.com/how-load-product-by-sku-or-id-in-magento
quelle
Wie bereits erläutert, liegt dies daran, dass die Methode
Mage_Catalog_Model_Product::loadBySku
nicht vorhanden ist. Es muss eine MethodeloadBySku
in der Klasse vorhanden sein, die aufgerufen wird,Mage_Catalog_Model_Product
damit Sie sie verwenden können.Sie können auch
loadByAttribute()
Methoden verwenden, um die Produktdetails per SKU abzurufen.Sie können auch einen Blick auf diesen Artikel werfen, um weitere Einzelheiten zu erfahren. https://www.ipragmatech.com/ultimate-magento-developer-guide-get-product-details-using-restapi-magento-1-x/
quelle
Vorsicht
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
!Möglicherweise funktionieren 99% der Fälle, aber dies führt dazu, dass das Attribut
stock_item
geladen wird,Varien_Object
anstattMage_CatalogInventory_Model_Stock_Item
dass Methoden, wieMage_CatalogInventory_Model_Observer::checkQuoteItemQty
sie aufgerufen werden$stockItem instanceof Mage_CatalogInventory_Model_Stock_Item
, eine Ausnahme auslösen würden!Der beste Weg ist also:
quelle