Tôi đang làm việc trên tập lệnh sẽ tạo hoặc cập nhật các sản phẩm trong danh mục của tôi.
Các kịch bản hoạt động tốt khi sản phẩm cần phải được tạo ra, nhưng nó không thành công khi sản phẩm đã tồn tại trong cơ sở dữ liệu đem lại cho tôi (nhiều lần) thông báo sau:Cập nhật sản phẩm theo chương trình trong Magento
2011-09-30T08:00:53+00:00 ERR (3): Recoverable Error: Argument 3 passed to Mage_Catalog_Model_Resource_Eav_Mysql4_Abstract::_canUpdateAttribute() must be an array, null given, called in ...
2011-09-30T08:00:53+00:00 ERR (3): Recoverable Error: Argument 3 passed to Mage_Eav_Model_Entity_Abstract::_canUpdateAttribute() must be an array, null given, called in ...
2011-09-30T08:00:53+00:00 ERR (3): Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in ...
Tôi đã nhìn vào phương pháp được trích dẫn trong tin nhắn, nhưng tôi không thể tìm thấy bất kỳ lý do nào khiến kịch bản thất bại.
Kịch bản đầu tiên cố gắng tải một sản phẩm sử dụng:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
và sau đó kiểm tra nếu sản phẩm được lấy ra bằng cách sử dụng đơn giản if(!$product) { //creation }
.
Tất cả mã theo sau câu lệnh if được chia sẻ để tạo hoặc cập nhật và bao gồm các cuộc gọi setter trên đối tượng sản phẩm.
Đây là mã tôi sử dụng:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
if(!$product) {
// the product doesn't exist yet
$product = new Mage_Catalog_Model_Product();
$product->setSku($sku);
$product->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE);
$product->setCreatedAt(strtotime('now'));
}
// setters calls
$product->setTeinte(trim((string)$record->web_teinte));
// ...
// finally save the product
$product->save();
Có lẽ ai đó đã phải đối mặt với cùng một vấn đề.
Mọi trợ giúp đều được chào đón! Cảm ơn bạn.
Có lẽ chúng tôi có thể giúp bạn nếu bạn đăng phần có liên quan của tập lệnh. Đặc biệt là bao gồm cả dòng gây ra lỗi, bởi vì tại thời điểm này chỉ có bạn biết những gì hướng dẫn gây ra lỗi. –
đúng, tôi sẽ chỉnh sửa câu hỏi. cảm ơn bạn. –
Tôi biết lỗi đi kèm với '$ product-> save();' nhưng tôi không biết tại sao. Khi tôi đăng nhập sản phẩm tôi thấy nó được tải đúng. Tôi nghĩ rằng một cuộc gọi đơn giản đến phương thức 'save()' sẽ thực hiện cập nhật –