Streszczenie
Chciałem załadować produkt według SKU. Jest wiele artykułów, postów na blogu, wyniki przepełnienia stosu itp. Chcę tylko wiedzieć - dlaczego ładowanie produktu przez SKU musi być tak trudne?
// 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');
Oczywiście, w tej chwili oczekuję od Magento zbyt wiele simple
sposobu na zrobienie czegoś (prosta to koncepcja, której Magento najwyraźniej nie zna)
// This works:
$product = Mage::getModel('catalog/product');
$product->load($product->getIdBySku($sku));
loadByAttribute()
, że nie otrzymujesz wszystkich powiązanych danych produktu. Będzie brakowało takich rzeczy jak akcje i media.Testowałem czas wykonania dla różnych metod ładowania produktu przez SKU. Jest to najbardziej wydajny:
Testy:
Wyniki testu (w sekundach):
źródło
Aby załadować produkt według SKU w magento, możesz użyć następującego kodu:
Używałem tego za każdym razem i działa idealnie. Jeśli chcesz załadować wiele produktów, spróbuj tego
Źródło referencyjne http://magentoexplorer.com/how-load-product-by-sku-or-id-in-magento
źródło
Jak już omówiono,
Mage_Catalog_Model_Product::loadBySku
dzieje się tak, ponieważ metoda nie istnieje. Abyś mógł z niej skorzystać, musi być wywołana metodaloadBySku
w klasieMage_Catalog_Model_Product
.Możesz także użyć
loadByAttribute()
metod, aby uzyskać szczegółowe informacje o produktach przez sku.Więcej informacji znajdziesz w tym artykule. https://www.ipragmatech.com/ultimate-magento-developer-guide-get-product-details-using-restapi-magento-1-x/
źródło
Uwaga
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
!Może działać w 99% przypadków, ale spowoduje to załadowanie atrybutu,
stock_item
ponieważVarien_Object
zamiastMage_CatalogInventory_Model_Stock_Item
tego wywołaneMage_CatalogInventory_Model_Observer::checkQuoteItemQty
zostaną takie metody ,$stockItem instanceof Mage_CatalogInventory_Model_Stock_Item
które spowodują wyjątek!Więc najlepszym sposobem jest:
źródło