конспект
Я хотел загрузить товар по SKU, есть много статей, сообщений в блоге, результаты переполнения стека и т. Д. Все, что я хочу знать, - почему так сложно загружать товар по SKU?
// 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');
Конечно, на данный момент я слишком многого ожидаю от Magento, simple
как сделать что-то (простая концепция, с которой Magento явно не знакома)
// This works:
$product = Mage::getModel('catalog/product');
$product->load($product->getIdBySku($sku));
loadByAttribute()
что вы не получаете все данные о продукте. В нем будут отсутствовать такие вещи, как акции и медиа-объекты.Я проверил время выполнения для различных методов загрузки продукта по SKU. Это самое эффективное:
Испытания:
Результаты теста (в секундах):
источник
Для загрузки товара по артикулу в magento вы можете использовать следующий код:
Я использовал это каждый раз, и он отлично работает. Если вы хотите загрузить несколько продуктов, попробуйте это
Справочный источник http://magentoexplorer.com/how-load-product-by-sku-or-id-in-magento
источник
Как уже обсуждали, это потому, что метод
Mage_Catalog_Model_Product::loadBySku
не существует. ВloadBySku
этом классе должен быть вызван метод,Mage_Catalog_Model_Product
чтобы вы могли его использовать.Вы также можете использовать
loadByAttribute()
методы, чтобы получить подробную информацию о продукции по sku.Вы также можете посмотреть эту статью для получения более подробной информации. https://www.ipragmatech.com/ultimate-magento-developer-guide-get-product-details-using-restapi-magento-1-x/
источник
Остерегайтесь
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
!Это может работать в 99% случаев, но это приведет к загрузке атрибута,
stock_item
аVarien_Object
не кMage_CatalogInventory_Model_Stock_Item
таким методам, какMage_CatalogInventory_Model_Observer::checkQuoteItemQty
он,$stockItem instanceof Mage_CatalogInventory_Model_Stock_Item
который вызовет исключение!Так что лучший способ это:
источник