0

ネットで延々と検索した後、これについて私は最終的にその問題をあきらめました。私は、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 に関しては、あなたが「小屋で最も鋭いツール」と呼んでいるものではありませんが、私の検索では、同じことを検索している私のような初心者がたくさん見つかりましたが、このジレンマに対する答えはありません。

これに関する助けがあれば、毎晩の睡眠時間が大幅に増加します:)そして、他の人もきっとそうです、ありがとう。

4

2 に答える 2

0

問題は、変数 $attributeId が数値ではなく配列であることです。この小さな修正を使用すると、うまくいくはずです。

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

デバッガを使用しますか? xdebug を使用すれば、この問題を数分で解決できたはずです。

于 2013-01-22T21:41:18.497 に答える
0

例外はデータベース制約例外です。catalog_product テーブルを見て、上記のコードが (間接的に) 違反しているという制約があるかどうかを確認する必要があります。

于 2013-01-22T21:26:28.173 に答える