保存产品自定义属性值时为什么会出现此错误?

时间:2015-10-06 20:46:58

标签: php magento attributes

我正在尝试使用这些简单的代码来保存产品值以进行测试。

 $p = Mage::getModel("catalog/product");
       $p->setData("sku","real val sku111");
       $p->setData("name","real val name");
       $p->setData("custom_attr","real val");
       $p->save();

我通过管理面板创建了一个custom_attr属性,上面的代码发出错误。

  

处理您的请求时出错

错误是:

  

a:5:{i:0; s:476:" SQLSTATE [23000]:完整性约束违规:1452   无法添加或更新子行:外键约束失败   (magento_oguzcatalog_product_entity,CONSTRAINT   FK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID外国钥匙   (attribute_set_id)参考eav_attribute_set   (attribute_set_id)),查询是:INSERT INTO   catalog_product_entityentity_type_idskucreated_at,   updated_at)价值观(?,?,' 2015-10-06 20:34:57',' 2015-10-06   20:34:57')&#34 ;; I:1; S:1940:"#0

为什么我收到此错误?如何保存此属性的值?

1 个答案:

答案 0 :(得分:0)

它似乎不是来自您的自定义属性。

当您执行该段代码时,您基本上会创建一个新产品。 在创建产品时,Magento需要一个attribute_set_id。

这里的这段代码可能会毫无错误地执行:

$p = Mage::getModel("catalog/product");
$p->setData("sku","real val sku111");
$p->setData("name","real val name");
$p->setData("custom_attr","real val");
// Assuming "Default" attribute set id is 9
$p->setAttributeSetId(9);
$p->save();

如果要编辑现有产品,则必须在任何setData调用之前使用以下内容加载id:

$_product = Mage::getModel('catalog/product')->loadByAttribute('sku','real val sku111');