0

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

从一开始就进行 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 时,我并不完全是你所说的“棚子里最锋利的工具”,但在我的搜索中,我发现很多像我一样的新手在寻找同样的东西,但对这个困境没有答案。

对此的任何帮助都会大大增加我的夜间睡眠时间:) 我也打赌其他人,谢谢。

4

2 回答 2

0

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

于 2013-01-22T21:26:28.173 回答
0

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

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

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

于 2013-01-22T21:41:18.497 回答