api - Magento 更新产品的客户组价格

标签 api magento product

我正在尝试使用 Mage 更新 Magento 中的客户组价格(因为我无法在 SOAP V2 API 中找到执行此操作的方法)。我找到了一个 StackOverflow 示例,但它对我不起作用。我使用的代码如下:

<?php
  include_once '../App/Mage.php';
  Mage::app();

  $productID = $_GET["id"];
  $product = Mage::getModel('catalog/product')->load($productID);


  $groupPricingData = array(array('price_id'=>1,'website_id'=>0, 
                                'cust_group'=>3, 'price'=>666));


  $product->setData('group_price',$groupPricingData);
  $product->save();

  echo "true"; 

?>

如果我使用已设置任何客户价格的产品,我会收到以下错误。如果我尝试没有现有价格的产品,它不会出错,但不会创建客户组价格。

SCREAM: Error suppression ignored for 
( ! ) Fatal error: Uncaught exception 'Mage_Eav_Model_Entity_Attribute_Exception' with
message 'SQLSTATE[23000]: Integrity constraint violation: 1062
Duplicate entry '24-0-3-0' for key 'CC12C83765B562314470A24F2BDD0F36'' in      
C:\wamp\www\magento\app\code\core\Mage\Core\Model\Config.php on line 1348 
( ! ) Mage_Eav_Model_Entity_Attribute_Exception: SQLSTATE[23000]: 
Integrity constraint violation: 1062 Duplicate entry '24-0-3-0' for   
key 'CC12C83765B562314470A24F2BDD0F36' in    
C:\wamp\www\magento\app\code\core\Mage\Core\Model\Config.php on line 1348 

最佳答案

我一直在网上寻找有关如何正确“更新”Magento 产品记录上的团体价格的答案,但没有成功。翻阅 Magento 的源代码也没有让我有任何收获。然而,我发现了两种关于如何清除现有团体价格的解决方案,这样您就不会收到此错误。

1 - 直接SQL查询删除现有的团价数据

$coreResource = Mage::getSingleton('core/resource');
$conn         = $coreResource->getConnection('core_write');
$table_name   = $coreResource->getTableName('catalog_product_entity_group_price');
$conn->delete($table_name, array('entity_id = '.$product->getId()));

2-将产品的团价设置为空,并保存产品。

$product->setData('group_price', array())->save();

在设置团体价格数据并保存产品之前执行其中任何一个(无需同时执行这两个操作)将避免违反完整性约束,因为它们会有效地删除产品的现有团体价格。方法 1 感觉很粗略,因为我们通常不进行直接的 sql 查询,而是依赖模型类来为我们封装此逻辑,但在我的测试环境(Magento 1.9)中它可以工作。方法 2 可能看起来更安全,但它更耗费资源,因为它保存了整个产品记录,而我们真正需要做的就是更新/删除现有的组价格。另外,它需要冗余保存,因为我们正在“保存以删除”现有的团体价格。

我建议之后重新索引产品价格,因为团体价格数据也存储在“catalog_product_index_group_price”中。

关于api - Magento 更新产品的客户组价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636927/

相关文章:

python - Kraken API 请求发送异常

api - 使用YouTube的API渲染预览

magento - 更改商店的属性数据 - Magento 2

html - 我如何在 Bigcartel 中隐藏产品的价格?

linux - 有没有Linux API,比如windows获取windows API,Mac获取Cocoa?

javascript - 添加到购物车在 magento 中不起作用

html - Magento、图标包、CName 记录和 Cloudflare

php - 在 Woocommerce 3 中获取产品属性

r - SQLite 中是否有产品运算符(或解决方法)?

api - Twitter API - 转发文本修改