私のカタログの製品を作成または更新するスクリプトを作成しています。私はこの方法を見てきたMagentoで製品をプログラムで更新する
2011-09-30T08:00:53+00:00 ERR (3): Recoverable Error: Argument 3 passed to Mage_Catalog_Model_Resource_Eav_Mysql4_Abstract::_canUpdateAttribute() must be an array, null given, called in ...
2011-09-30T08:00:53+00:00 ERR (3): Recoverable Error: Argument 3 passed to Mage_Eav_Model_Entity_Abstract::_canUpdateAttribute() must be an array, null given, called in ...
2011-09-30T08:00:53+00:00 ERR (3): Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in ...
:製品を作成する必要があるとき
スクリプトが正常に動作しますが、製品はすでに私(何度も)次のようなメッセージを与えるデータベースに存在する場合には、失敗しましたメッセージに引用されていますが、スクリプトが失敗する理由が見つかりません。
スクリプトが最初に使用して製品をロードしよう:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
し、テスト製品は、簡単なif(!$product) { //creation }
を使用して取得した場合。
ifステートメントに続くすべてのコードは、作成または更新用に共有され、製品オブジェクトに対するセッター呼び出しで構成されます。ここで
は、私が使用するコードです:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
if(!$product) {
// the product doesn't exist yet
$product = new Mage_Catalog_Model_Product();
$product->setSku($sku);
$product->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE);
$product->setCreatedAt(strtotime('now'));
}
// setters calls
$product->setTeinte(trim((string)$record->web_teinte));
// ...
// finally save the product
$product->save();
はたぶん誰かが既に同じ問題に直面しています。
何か援助を歓迎します!ありがとうございました。
スクリプトの関連部分を投稿すると助けてくれるかもしれません。特にエラーを引き起こす行が含まれているのは、現時点でどの命令がエラーをトリガしているのかが分かっているだけなので、 –
そうです、質問を編集します。ありがとうございました。 –
エラーは '$ product-> save();'と一緒に来ますが、私はなぜそれがわかりません。製品をログに記録すると、正しくロードされていることがわかります。私は 'save()'メソッドへの単純な呼び出しが更新をしたと思った。 –