フロントエンドで商品を追加しています。
エラーメッセージが表示されます。
SQLSTATE [23000]:整合性制約違反:1452子行を追加または更新できません:外部キー制約が失敗しました(
magento
。catalog_product_entity
、CONSTRAINTFK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID
FOREIGN KEY(attribute_set_id
)REFERENCESeav_attribute_set
(attribute_set_id
)ON DE)
public function saveVirtualNewProduct($wholedata)
{
$cats=array();
foreach($wholedata['category'] as $keycat){
array_push($cats,$keycat);
}
if($wholedata['status']==1 && isset($wholedata['wstoreids']) ){
$status=1;
$stores=$wholedata['wstoreids'];
}
else{
$status=Mage::getStoreConfig('marketplace/marketplace_options/product_approval')? 2:1;
$stores=Mage::app()->getStore()->getStoreId();
}
$magentoProductModel = Mage::getModel('catalog/product');
$magentoProductModel->setData($wholedata);
$saved=$magentoProductModel->save();
$lastInserId = $saved->getId();
/* Update Special from-to Date */
if($wholedata['special_from_date'] && $wholedata['special_to_date'])
{
//Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$product = Mage::getModel('catalog/product')->load($lastInserId);
$product->setSpecialFromDate($wholedata['special_from_date']);
$product->setSpecialFromDateIsFormated(true);
$product->setSpecialToDate($wholedata['special_to_date']);
$product->setSpecialToDateIsFormated(true);
$product->save();
}
/* Update Special from-to Date */
$magentoProductModel = Mage::getModel('catalog/product')->load($saved->getId());
$baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode();
$currentCurrencyCode = Mage::app()->getStore()->getCurrentCurrencyCode();
$allowedCurrencies = Mage::getModel('directory/currency')->getConfigAllowCurrencies();
$rates = Mage::getModel('directory/currency')->getCurrencyRates($baseCurrencyCode, array_values($allowedCurrencies));
if($wholedata['special_price']){
$special_price = $wholedata['special_price']/$rates[$currentCurrencyCode];
$magentoProductModel->setSpecialPrice($special_price);
}
$price = $wholedata['price']/$rates[$currentCurrencyCode];
$magentoProductModel->setPrice($price);
$magentoProductModel->setStoresIds(array($stores));
$storeId = Mage::app()->getStore()->getId();
$magentoProductModel->setWebsiteIds(array(Mage::getModel('core/store')->load( $storeId )->getWebsiteId()));
$magentoProductModel->setCategoryIds($cats);
$magentoProductModel->setStatus($status);
$saved=$magentoProductModel->save();
$lastId = $saved->getId();
$this->_saveStock($lastId,$wholedata['stock'],$wholedata['is_in_stock']);
$wholedata['id'] = $lastId;
$collection1=Mage::getModel('marketplace/product');
$collection1->setmageproductid($lastId);
$collection1->setuserid($wholedata['userid']);
$collection1->setstatus($status);
$collection1->save();
if($wholedata['type_id']=='virtual'){
if((isset($_FILES) && count($_FILES) > 0) && !isset($wholedata['csv'])){
if (!is_dir(Mage::getBaseDir().'/media/marketplace/')){
mkdir(Mage::getBaseDir().'/media/marketplace/', 0755);
}
if (!is_dir(Mage::getBaseDir().'/media/marketplace/'.$lastId)){
mkdir(Mage::getBaseDir().'/media/marketplace/'.$lastId, 0755);
}
foreach($_FILES as $image){
$imagesdir = Mage::getBaseDir().'/media/marketplace/'.$lastId.'/';
$filename = $image['name'];
move_uploaded_file($image['tmp_name'],$imagesdir.$filename);
}
$this->_addImages($lastId,$wholedata['defaultimage']);
}
}
return $lastId;
}
誰か助けてください
ありがとう。
実行中のセットアップスクリプトはありますか?エラーメッセージだけでは、原因を特定するのは困難です。
—
David Manners
MarketplaceaccountController.phpの18行目のコードは何ですか?
—
MTM 2014
また、少しの提案ですが、更新するために同じ製品を何度もロードする必要はないと思います。
—
MTM 2014
$magentoProductModel
関数の開始時に初期化されたモデルを使用して更新および保存できます。これにより、オーバーヘッドが削減されます。
この優れたデバッグチュートリアルを確認し、報告してください。
—
Fabian Blechschmidt 2014