gpt4 book ai didi

php - Magento 产品保存错误 事务尚未提交

转载 作者:行者123 更新时间:2023-11-29 08:17:14 27 4
gpt4 key购买 nike

当我尝试使用脚本在客户的 magento 安装上保存产品时,在调用 $product->save(); 后出现以下错误:

 PHP Fatal error:  Uncaught exception 'Exception' with message 'User Error: Some transactions have not been committed or rolled back

例如...

        $_products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('supplier')->AddAttributeToFilter('supplier', $options[$vendor['old_supplier_name']]);

foreach($_products as $product){

$product->setData('supplier', $options[$vendor['new_supplier_name']]);
$product->save();

}

最佳答案

该错误源于以下事实:获取产品集合时,并未加载所有属性。对集合中的产品调用 save 可能会导致大问题。保存之前需要调用load。此外,产品只能从管理商店保存。

Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); //set the admin store;
$_products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('supplier')->AddAttributeToFilter('supplier', $options[$vendor['old_supplier_name']]);
foreach($_products as $product){
$product = Mage::getModel('catalog/product')->load($product->getId());
$product->setData('supplier', $options[$vendor['new_supplier_name']]);
$product->save();
}

但不要仅使用上面的代码来更新一个字段。实在是太慢了。
使用这个代替:

$_products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('supplier')->AddAttributeToFilter('supplier',  $options[$vendor['old_supplier_name']]);
Mage::getModel('catalog/product_action')->updateAttributes($_products->getAllIds(), array('supplier'=>$options[$vendor['new_supplier_name']]), 0);

现在一些解释。
updateAttributes 可用于批量更新产品属性。它需要 3 个参数。

  • 要更新的产品 ID 数组
  • 包含要更新的属性的数组
  • 商店 ID。 0 表示默认值。

关于php - Magento 产品保存错误 事务尚未提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20355367/

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