我正在尝试使用这些简单的代码来保存产品值以进行测试。
$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_oguz
。catalog_product_entity
,CONSTRAINTFK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID
外国钥匙 (attribute_set_id
)参考eav_attribute_set
(attribute_set_id
)),查询是:INSERT INTOcatalog_product_entity
(entity_type_id
,sku
,created_at
,updated_at
)价值观(?,?,' 2015-10-06 20:34:57',' 2015-10-06 20:34:57')&#34 ;; I:1; S:1940:"#0
为什么我收到此错误?如何保存此属性的值?
答案 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');