Tôi đang cố gắng thêm sản phẩm vào Magento 1.5 theo lập trình. Kịch bản của tôi cuối cùng sẽ là một công việc cron, thường xuyên cập nhật và thêm các sản phẩm như được quyết định bởi một tệp XML được cung cấp bởi hệ thống tài khoản.Magento: Thêm sản phẩm mới theo chương trình
Tôi gặp sự cố khi tạo sản phẩm mới. Mã phân khúc có liên quan từ kịch bản của tôi là:
$attributeSetId = 4;
//$newproduct = Mage::getModel('catalog/product');
$newproduct = new Mage_Catalog_Model_Product();
$newproduct->setTypeId('simple');
$newproduct->setWeight($product->UnitWeight);
$newproduct->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
$newproduct->setStatus(1);
$newproduct->setSKU($SKU);
$newproduct->setTaxClassId(0);
$newproduct->setWebsiteIDs(array(0));
$newproduct->setStoreIDs(array(1));
$newproduct->setStockData(array(
'is_in_stock' => 1,
'qty' => $XMLproduct->QtyInStock,
'manage_stock' => 1
));
$newproduct->setAttributeSetId(4);
$newproduct->setName($product->Name);
$newproduct->setCategoryIds(array(3)); // array of categories it will relate to
$newproduct->setDescription($product->LongDescription);
$newproduct->setShortDescription($product->Description);
$newproduct->setPrice($XMLproduct->SalePrice);
try {
if (is_array($errors = $newproduct->validate())) {
$strErrors = array();
foreach($errors as $code=>$error) {
$strErrors[] = ($error === true)? Mage::helper('catalog')->__('Attribute "%s" is invalid.', $code) : $error;
}
$this->_fault('data_invalid', implode("\n", $strErrors));
}
$newproduct->save();
} catch (Mage_Core_Exception $e) {
$this->_fault('data_invalid', $e->getMessage());
}
Sản phẩm này là 'một nửa' tạo ra, nhưng kịch bản từ bỏ ném các lỗi sau:
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`LittleDickyBird`.`catalog_category_product_index`, CONSTRAINT `FK_CATALOG_CATEGORY_PROD_IDX_CATEGORY_ENTITY` FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON)' in /home/default/littledickybird.co.uk/user/htdocs/1.5/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /home/default/littledickybird.co.uk/user/htdocs/1.5/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /home/default/littledickybird.co.uk/user/htdocs/1.5/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#2 /home/default/littledickybird.co.uk/user/htdocs/1.5/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#3 /home/default/littledickybird.co.uk/user/htdocs/1.5/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ca...', Array)
#4 /home/default/littledic in /home/default/littledickybird.co.uk/user/htdocs/1.5/lib/Zend/Db/Statement/Pdo.php on line 234
thể bất cứ ai, làm ơn, ném bất kỳ ánh sáng vào những gì tôi đang thiếu hoặc làm sai. Như bạn có thể nói từ giọng của tôi, tôi khá tuyệt vọng, vì vậy bất kỳ sự giúp đỡ nào cũng sẽ được đánh giá rất cao.
Cảm ơn bạn
Đã có một vấn đề tương tự mà đã được giải quyết bằng cách bật InnoDB trên MySQL. Có thể muốn kiểm tra ở đó. Hy vọng rằng sẽ giúp! – Nic
Thật không may, đó không phải là vấn đề, như InnoDB đã hoạt động. Nhưng cảm ơn bạn đã giúp bạn. – AMP
Lỗi này cho thấy bạn đang cố sử dụng ID danh mục không tồn tại. Bạn có chắc là có danh mục 3 không? – clockworkgeek