Список заказов клиентов Magento API V2 не работает - PullRequest
1 голос
/ 16 мая 2011

Я использую API V2 «salesOrderList» для получения списка всех заказов, которые были размещены в Magento. Но SOAP Response показывает мне ошибку как: -

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

Я использую Magento Enterprise версии 1.9.0.0.

После изучения SQL и поиска в базе данных я обнаружил, что для каждого Ордера SQL предоставляет 4 записи для одного и того же идентификатора сущности ордера; с разницей только в полях имени области выставления счетов и доставки. Также запрос выполняет два левых соединения с одной и той же таблицей базы данных "sales_flat_order_address", используя два разных псевдонима (один для выставления счета и другой для доставки). Насколько я понимаю, это должно было сработать, чего не происходит.

Может кто-нибудь подсказать, что происходит и что можно сделать, чтобы исправить эту ошибку?

Любая помощь приветствуется и спасибо заранее.

1 Ответ

1 голос
/ 16 мая 2011

Грубо говоря, Magento создает для вас коллекцию заказов и пытается загрузить все записи. Эта коллекция имеет правило, позволяющее создавать только один объект заказа для каждого идентификатора, поэтому при загрузке дополнительного объекта выдается исключение.

Может быть проблема с левыми соединениями, но это трудно сказать. Не могли бы вы немного рассказать о том, как вы делаете вызов API? При неправильном соединении часто возникает эта проблема.


EDIT:

Если вы используете код по умолчанию, я думаю, что в базе данных есть ошибочные записи или это обновленная система Magento, которая в прошлом была неудачной. Попробуйте это на чистой копии вашей версии EE, указывающей на ту же базу данных. Если возникает та же проблема, вам может потребоваться указать в базе данных, чтобы найти причину проблемной загрузки данных. Поскольку у вас уже есть запрос, вы можете отделить части запроса, чтобы увидеть, возвращает ли какой-либо подзапрос слишком много данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...