Lỗi trên Mage :: getModel ('danh mục / sản phẩm') -> tải ($ sku, 'sku');


8

khi cố gắng tải một sản phẩm,

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

chúng tôi nhận được lỗi sau:

Fatal error:
Uncaught exception 'Exception' with message 'Warning: Invalid argument supplied for foreach()
in app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 954' in app/code/core/Mage/Core/functions.php:245 Stack trace:
#0 app/code/core/Mage/Eav/Model/Entity/Abstract.php(954): mageCoreErrorHandler(2, 'Invalid argumen...', '/var/www/magent...', 954, Array)
#1 app/code/core/Mage/Catalog/Model/Resource/Abstract.php(698): Mage_Eav_Model_Entity_Abstract->load(Object(Mage_Catalog_Model_Product), '120x180 ES-bale...', 'sku')
#2 app/code/core/Mage/Core/Model/Abstract.php(225): Mage_Catalog_Model_Resource_Abstract->load(Object(Mage_Catalog_Model_Product), '120x180 ES-bale...', 'sku')
#3 updatemagento.php(197): Mage_Core_Model_Abstract->load('120x180 ES-bale...', 'sku')
#4 {main} thrown in app/code/core/Mage/Core/functions.php on line 245

Bất cứ ý tưởng những gì đang đi sai?

Câu trả lời:


21

Một tùy chọn có sẵn cho bạn là tìm ID từ sku, sau đó tải theo ID.

$product = Mage::getModel('catalog/product');
$id = Mage::getModel('catalog/product')->getResource()->getIdBySku('your sku');
if ($id) {
    $product->load($id);
}

7

Như đã đề cập bởi những người khác, Mage_Catalog_Model_Product::loadphương pháp lấy ID của sản phẩm, không phải SKU. Đối số thứ hai của phương thức này có thể được chỉ định để xác định các thuộc tính nào sẽ được tải vào mô hình. Nó không có ý định được sử dụng làm trường "tải theo thuộc tính này".

Để tải sản phẩm theo một thuộc tính, bạn nên sử dụng:

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

4
Cảnh báo: loadByAttribute sử dụng bộ sưu tập và bộ lọc theo thuộc tính đã cho. Điều này có nghĩa là, người quan sát tải sản phẩm không áp dụng và bạn không có dữ liệu đầy đủ với chứng khoán, thư viện, v.v. như bạn sẽ có load().
Fabian Schmengler 27/1/2015

-2

$product= Mage::getModel('catalog/product')->load(123456); là phương pháp đúng, trong đó 123456 là id của sản phẩm.

Bạn có thể thử điều đó $product= Mage::getModel('catalog/product')->load('sku', 'mysku');thay vào đó, tôi nghĩ rằng thứ tự lập luận của bạn là sai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.