将已制作的属性分配给所有magento的属性集

时间:2013-01-22 21:05:03

标签: php magento attributes

在网上无休止地搜索之后,我终于放弃了这件事。 我试图为magento创建一个脚本(在我的例子中为1.6.2.0),使一个已经制作的属性(在我的情况下为“techpage”)以编程方式分配给“General”组中的所有属性集。

Goog计划从一开始就节省了大量时间,我正在努力学习这一点!

有人可以告诉我,我做错了吗?

<?php
require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app('default'); // Change default to whatever store you want to run

$model=Mage::getModel('eav/entity_setup','core_setup');
$attributeId=$model->getAttribute('catalog_product','techpage');

$allAttributeSetIds=$model->getAllAttributeSetIds('catalog_product');
foreach ($allAttributeSetIds as $attributeSetId) {
try{
$attributeGroupId=$model-    >getAttributeGroup('catalog_product',$attributeSetId,'General');
}
catch(Exception $e)
{
$attributeGroupId=$model->getDefaultArrtibuteGroupId('catalog/product',$attributeSetId);
}
$model-   >addAttributeToSet('catalog_product',$attributeSetId,$attributeGroupId,$attributeId);
}
?>

当我在浏览器中运行时,该死的那些吐出来了

  

“致命错误:未捕获的异常'PDOException'

带有消息

  

'SQLSTATE [23000]:完整性约束违规:1452无法添加或   更新子行:外键约束失败“

当谈到php和magento时,我并不完全是你所说的“棚内最尖锐的工具”,但在我的搜索中,我发现有很多像我这样的新手在寻找同样的东西,而且没有答案两难困境。

任何有关这方面的帮助都会大大影响我每晚的睡眠时间:)我也打赌其他人, 感谢。

2 个答案:

答案 0 :(得分:0)

异常是数据库约束异常。您应该查看catalog_product表,看看它是否有上述代码(间接)违反的任何约束。

答案 1 :(得分:0)

问题是,你的变量$ attributeId不是数字而是数组。 使用这个小修复,它应该工作。

$model->addAttributeToSet('catalog_product', $attributeSetId, $attributeGroupId, $attributeId['attribute_id']);

您使用调试器吗?你可以用xdebug在几分钟内解决这个问题。