duankuang1046 2012-08-01 13:05
浏览 48
已采纳

从PHP创建产品 - Magento

A friend of mine created a magento webshop recently. He wants to have a few thousand products in his store and asked the manufacturer to give him some kind of data he could simple import to magento. The manufacturer said that he does not own something like that or doesn't want to give it out (I'm not 100% sure about this one). But he was allowed to use all the product information on his site to complete his webshop. So I wrote a webcrawler who grabs all the information. After researching a bit, people told me not to insert all the information using SQL, but rather using a PHP script and the Magento API.

I have some probelms with the following script. It should create a product to add into the Magento database. The insert values are testing values.

<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
require("app/Mage.php");
echo "Test 
";
Mage::init();

$product = Mage::getModel('catalog/product');
$product->setName('Peter Parker');
$product->setDescription('Peter Parker Description');

$stock_data=array(
'use_config_manage_stock' => 0,
'qty' => 0,
'min_qty' => 0,
'use_config_min_qty'=>0,
'min_sale_qty' => 1,
'use_config_min_sale_qty'=>1,
'max_sale_qty' => 9999,
'use_config_max_sale_qty'=>1,
'is_qty_decimal' => 0,
'backorders' => 0,
'notify_stock_qty' => 0,
'is_in_stock' => 0
);
$product->setData('stock_data',$stock_data);
$product->setTaxClassId(2);     // default tax class
$product->setAttributeSetId(9); //9 is for default

$product->setWebsiteIds(array(1));
$product->setCategoryIds(array(9));
$product->setStatus(1);//1=Enabled; 2=Disabled;
$product->setVisibility(4);//4 = catalog &amp; search.
$image_name = 'blabla.JPEG';
$url = 'http://www.rasch-tapeten.de/shop/media/catalog/product/cache/1/image/bf8bb7ab75fe41b467eed88aa79f7917/1/3/133806.JPEG';
$img = 'media/'.$image_name;
echo $img."
";
function save_image($inPath,$outPath){
    //Download images from remote server
    $in=    fopen($inPath, "rb");
    $out=   fopen($outPath, "wb");
    while ($chunk = fread($in,8192))
    {
    fwrite($out, $chunk, 8192);
    }
    fclose($in);
    fclose($out);
}
save_image($url, $img);

try
{
    $product->addImageToMediaGallery($img, array('image', 'small_image', 'thumbnail'), false, false);
}catch(Mage_Core_Exception $e)
{
echo $e->getMessage();
}
try
{
    $product->save();
}catch(Exception $e)
{
    echo $e->getMessage();
}
?>

Well if i execute this one it throws the following exception:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`magento`.`catalog_product_entity`, CONSTRAINT `FK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID` FOREIGN KEY (`attribute_set_id`) REFERENCES `eav_attribute_set` (`attribute_set_id`) ON DE)

Does anyone know what I did wrong?

  • 写回答

3条回答 默认 最新

  • dongluxin2452 2012-08-01 13:43
    关注
    $product->setAttributeSetId(9); //9 is for default
    

    Are you sure that the default is 9?

    In our method to import products this is what we have done:

    protected $defaultAttributeSetId;   // Default attribute set
    
    private function getDefaultAttributeSetId()
    {
        if (!isset($this->defaultAttributeSetId))
        {
            $categoryModel = Mage::getModel("catalog/category");            
            $this->defaultAttributeSetId = $categoryModel->getDefaultAttributeSetId();
        }
        return $this->defaultAttributeSetId;
    }
    ...
    ->setAttributeSetId($this->getDefaultAttributeSetId())
    ...
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?