Я использую SugarCRM Pro 6.5.5. Я пытаюсь сделать некоторую интеграцию в другое приложение, поэтому мне нужно сделать некоторые вызовы API из этого другого приложения. Я использую REST API v2. На этом этапе мне нужно получить контакт, связанный с учетной записью с помощью идентификатора учетной записи. Я пробовал как get_relationships()
и get_entry_list()
, но я не могу заставить их работать.
Вот мой вход для get_relationships()
:
{"session":"eujfbfsfjgni98m0mivl6jm6r2","module_name":"Accounts","module_id":"c03d0649-0525-2f90-1206-50881e87d7dd","link_field_name":"contacts"}
Я пробовал много вариантов этого и нескольких других вариантов, но ничего не сделал, чего хотел. Это результат сверху:
stdClass Object ( [entry_list] => Array ( [0] => stdClass Object ( [id] => [module_name] => Contacts [name_value_list] => stdClass Object ( [deleted] => stdClass Object ( [name] => deleted [value] => 0 ) [do_not_call] => stdClass Object ( [name] => do_not_call [value] => 0 ) ) ) ) [relationship_list] => Array ( ) )
Я не вижу, как эта информация может когда-либо быть полезной.
Затем я попробовал get_entry_list()
с запросом, чтобы выбрать только контакты, у которых был данный идентификатор учетной записи. Вот мой вклад для этого:
{"session":"8mol33e7kdq6girugu30dnt074","module_name":"Contacts","query":"accounts.id = 'c03d0649-0525-2f90-1206-50881e87d7dd'"}
Я использую accounts.id
потому что я читал в похожих вопросах, это правильно. Я пробовал много других вещей, таких как: contacts.account_id
, account_id
и т. Д. В каждом случае я получаю ошибку MySQL в журнале, указав, что столбец недействителен.
SugarCRM: как получить все контакты для учетной записи через REST API
Этот вопрос имеет значение и, похоже, является одной и той же проблемой. Я попытался добавить параметр link_name_to_fields_array
к моему вводу, но независимо от того, какое значение я предоставляю, это приводит к следующей ошибке MySQL в журнале:
AND jt11.deleted=0 where (Array) AND contacts.deleted=0: MySQL error 1054: Unknown column 'Array' in 'where clause'
Dafuq?
Благодарю.
Благодаря ychaouche , я понял это.
В конце концов, я смог использовать метод get_relationships()
. Я попытался, прежде чем добавлять связанные related_fields
к моему вводу, но все, что было сделано, было результатом пустого набора результатов. Ответ? Установите related_module_query
в пустую строку … и теперь набор результатов не пуст. Да, из-за этого у меня 3 часа ярости от Google.
Итак, вот какой рабочий код на тот случай, если у кого-то еще есть эта проблема:
{ "session": "iov9pg9kvvl60librung1h5fh6", "module_name": "Accounts", "module_id": "c03d0649-0525-2f90-1206-50881e87d7dd", "link_field_name": "contacts", "related_module_query": "", "related_fields": [ "first_name", "last_name" ], "deleted": false }
Это привело меня к следующему результату:
stdClass Object ( [entry_list] => Array ( [0] => stdClass Object ( [id] => [module_name] => Contacts [name_value_list] => stdClass Object ( [first_name] => stdClass Object ( [name] => first_name [value] => John ) [last_name] => stdClass Object ( [name] => last_name [value] => Smith ) ) ) ) [relationship_list] => Array ( ) )
Конечно, вы можете указать разные поля в related_fields
и получить разные части данных.
Взгляните на sugarcrm / tests / service / RESTAPI4Test.php . В нем есть много примеров того, как использовать REST API. Общепринятой практикой является изучение тестового кода для примеров кода о том, как использовать библиотеку / фреймворк / API. Тесты в этом смысле являются очень хорошей документацией.
Надеюсь, это поможет.