我一直在尝试添加/编辑图像到magento产品。
我有这个代码
require_once("../test/app/Mage.php");
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$simpleProduct = Mage::getModel('catalog/product');
$simpleProduct->load($_POST['id_in_magento']);
$mediaApi = Mage::getModel("catalog/product_attribute_media_api");
$mediaApiItems = $mediaApi->items($simpleProduct->getId());
foreach ($mediaApiItems as $item) {
$datatemp = $mediaApi->remove($simpleProduct->getId(), $item['file']);
}
$simpleProduct->getResource()->save($simpleProduct);
foreach (unserialize($_POST['product_groups_images']) as $img) {
$simpleProduct->addImageToMediaGallery($img, array('image', 'small_image', 'thumbnail'), false, false);
}
// ERROR on this line...
$simpleProduct->getResource()->save($simpleProduct);
这段代码可以工作,也可以不工作。
1)如果产品没有图像,则代码工作
2)如果产品之前有图像,它删除图像成功(我已经从产品前端链接确认图像被删除),但随后(尝试)添加图像,当试图保存它时发生错误。
这是完全错误
SQLSTATE[23000]: Integrity constraint violation: 1452不能添加或更新子行:a foreign key constraint fails (
coszi_test
. c .)catalog_product_entity_media_gallery_value
,约束FK_CAT_PRD_ENTT_MDA_GLR_VAL_VAL_ID_CAT_PRD_ENTT_MDA_GLR_VAL_ID
外键(value_id
)引用catalog_product_enti)
像这样修改代码
foreach ($mediaApiItems as $item) {
$datatemp = $mediaApi->remove($simpleProduct->getId(), $item['file']);
}
$simpleProduct->getResource()->save($simpleProduct);
foreach ($mediaApiItems as $item) {
$datatemp = $mediaApi->remove($simpleProduct->getId(), $item['file']);
}
删除此保存
$simpleProduct->getResource()->save($simpleProduct);