Ringkasan
Saya ingin memuat produk dengan SKU, ada banyak artikel, posting blog, hasil stack overflow, dll. Yang ingin saya ketahui adalah - mengapa harus begitu sulit memuat produk dengan 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');
Tentu saja, saya berharap terlalu banyak dari Magento pada saat ini simple
cara melakukan sesuatu (sederhana adalah konsep yang Magento jelas tidak akrab dengan)
// This works:
$product = Mage::getModel('catalog/product');
$product->load($product->getIdBySku($sku));
loadByAttribute()
bahwa Anda tidak mendapatkan semua data produk terkait. Akan ada hal-hal yang hilang seperti stok dan objek media.Saya menguji waktu eksekusi untuk berbagai metode yang saya lihat memuat produk dengan SKU. Ini yang paling efisien:
Tes:
Hasil pengujian (dalam detik):
sumber
Untuk memuat produk dengan SKU di magento Anda dapat menggunakan kode berikut:
Saya menggunakan ini setiap kali dan bekerja dengan sempurna. Jika Anda ingin memuat banyak produk, coba ini
Sumber referensi http://magentoexplorer.com/how-load-product-by-sku-or-id-in-magento
sumber
Seperti Sudah Diskusikan, Ini karena metodenya
Mage_Catalog_Model_Product::loadBySku
tidak ada. Harus ada metode yang dipanggilloadBySku
di kelasMage_Catalog_Model_Product
agar Anda dapat menggunakannya.Anda juga dapat menggunakan
loadByAttribute()
metode untuk mendapatkan detail produk dengan sku.Anda juga dapat melihat artikel ini untuk detail lebih lanjut https://www.ipragmatech.com/ultimate-magento-developer-guide-get-product-details-using-restapi-magento-1-x/
sumber
Waspadalah terhadap
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
!Ini dapat bekerja 99% dari kasus, tetapi ini akan menghasilkan pemuatan atribut
stock_item
karenaVarien_Object
alih-alihMage_CatalogInventory_Model_Stock_Item
metode sepertiMage_CatalogInventory_Model_Observer::checkQuoteItemQty
itu akan memanggil$stockItem instanceof Mage_CatalogInventory_Model_Stock_Item
yang akan membuang pengecualian!Jadi cara terbaik adalah:
sumber