2011-05-16 51 views
1

我正在使用API​​ V2“salesOrderList”接收已放置在Magento中的所有订单的列表。但SOAP Response向我显示的错误为: -Magento API V2销售订单不起作用

Item (Mage_Sales_Model_Order) with the same id "1" already exist 

我正在使用Magento Enterprise版本1.9.0.0。

在查看SQL &搜索数据库后,我发现对于每个Order,SQL为同一个Order Entity ID提供4条记录;差别只在于发货区域的帐单&的名称字段中。此外,查询通过使用两个不同的别名(一个用于计费&另一个用于装运)执行具有相同数据库表“sales_flat_order_address”的两个左连接。根据我的理解,这应该起作用了,这不会发生。

任何人都可以请建议至于发生了什么&可以做些什么来恢复这个错误?

任何帮助表示感谢,并提前感谢。

回答

1

粗略地说,Magento正在为您创建一个订单集合并尝试加载所有记录。这个集合有一条规则,只允许它为每个ID创建一个订单对象,所以当你的附加对象被加载时会抛出一个异常。

左边的连接可能是问题,但很难说明问题。你能否发表一些关于你如何进行API调用的细节?不正确的连接通常会遇到这个问题。


编辑:

如果您使用的是默认的代码,我的第一个猜测是,有数据库中的错误的记录,或者这是一个升级Magento的系统,该系统有一个坏的升级中过去。尝试使用指向同一数据库的EE版本的干净副本。如果出现同样的问题,则可能需要在数据库中拼凑查找有问题的数据加载的原因。由于您已经有了查询,因此您可能需要分离查询的某些部分以查看某个子查询是否返回了太多数据。

+0

我使用默认的Magento代码,但在这种情况下,我也遇到了同样的错误。你可以在这个类的''items''看这个类“'Mage_Sales_Model_Order_Api_V2'”。我唯一担心的是Magento的默认代码不能正常工作,我应该怎么做才能使其工作?请帮忙。谢谢。 – 2011-05-16 12:22:33

+0

经过您提到的步骤后,我发现SQL的结果是4条记录,每条订单。其原因部分是因为帐单地址和送货地址不同。然而,许多以前的这种类型的订单遇到仍然只有一个记录每个订单。还有更多的想法? – 2011-05-16 13:13:08

+0

如果帐单和送货地址保存为不同的别名,那么没有理由为什么这会导致它将每个记录复用。你可以用生成的SQL编辑问题,并返回单个订单(全部四行)的例子吗? – 2011-05-16 15:37:03

相关问题