gpt4 book ai didi

magento - 在 Magento 中以编程方式更新产品

转载 作者:行者123 更新时间:2023-12-03 22:49:50 24 4
gpt4 key购买 nike

我正在编写一个脚本,用于在我的目录中创建或更新产品。
当需要创建产品时,脚本工作正常,但当产品已存在于数据库中时它会失败,给我(多次)以下消息:

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 语句后面的所有代码都共享用于创建或更新,并由对产品对象的 setter 调用组成。

这是我使用的代码:
$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();

也许有人已经面临同样的问题。
欢迎任何帮助!谢谢你。

最佳答案

很有可能,在你的“setter 调用”中,你试图设置一些不能直接在 $product 上设置的东西。它甚至可能是“setTeinte”,因为我不确定它要设置什么。但是由于我们无法看到您的所有代码,所以说起来有点困难,所以按照我的指导,请查看下面的代码,它直接在产品和库存水平上设置了一些信息。因此,它说明了必须如何设置某些数据。我希望它有帮助。

$SKU = (string)$XMLproduct->Sku;
$product = Mage::getModel('catalog/product')->loadByAttribute('sku',$SKU);

if ($product) {
//Product found, so we need to update it in Magento.

$product->setName((string)$XMLproduct->Name);
$product->setPrice((real)$XMLproduct->SalePrice);
//$product->setDescription((string)$XMLproduct->LongDescription);
//$product->setShortDescription((string)$XMLproduct->Description);

$product->save();

$productId = $product->getId();
$stockItem =Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
$stockItemId = $stockItem->getId();

$stockItem->setData('manage_stock', 1);
$stockItem->setData('qty', (integer)$XMLproduct->QtyInStock);

$stockItem->save();

echo $SKU," Updated: Name: '",(string)$XMLproduct->Name,"', Price: ",(real)$XMLproduct->SalePrice,", Stock level: ",$XMLproduct->QtyInStock,PHP_EOL;

$updated++;
}

关于magento - 在 Magento 中以编程方式更新产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7599576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com