SugarCRM 7 SugarQuery() оператор соединения с пользовательскими модулями

Я пытаюсь написать простой запрос в Sugar 7.2, который присоединится к таблице. Этот SQL я и пытаюсь создать в среде Sugar с помощью SugarQuery().

SELECT * FROM keyname_table_a LEFT JOIN keyname_table_b

Итак, я создал следующее. Он прекрасно работает, когда я использую основные модули, но если я переключаю его на пользовательские модули, которые мы создали, Sugar выходит из системы и выводит на экран приглашение для входа.

$query = new SugarQuery();
$query->from(BeanFactory::getBean('keyname_table_a'));
$query->join('keyname_table_b');
$results = $query->execute();

return print_r($results, true);

Вышеприведенный выводит меня из системы и выдает мне следующее сообщение об ошибке во всплывающем сообщении (аналогично тому, как работает app.alert.show) и выводит меня из системы.

Error: Request failure, or, missing/invalid parameter. Please contact technical support

Если я заменю таблицы "from" и "join" на "Accounts" и "case" соответственно, то запрос будет работать нормально и получит ожидаемый результат. Тем не менее, переключение на пользовательские модули, которые у нас есть, приводит к вышеуказанной ошибке, и мы мгновенно выходим из системы.

Я проверил, что отношения существуют, и есть данные, связывающие их вместе. Это отношения один ко многим в Sugar. table_a один, а table_b это много.

Как правильно соединить два пользовательских модуля с SugarQuery() объект?

2 ответа

Вам нужно передать имя поля ссылки вместо имени таблицы или имени отношения

$query = new SugarQuery();
$query->from(BeanFactory::getBean('keyname_table_a'));
$query->join('link_name');
$results = $query->execute();

Объединение должно быть именем отношения. Если вы хотите присоединиться к таблице напрямую, вы можете использовать joinTable().

В приведенном выше примере "Счета", case - это имя отношения, а не имя таблицы.

Хорошего дня!

Другие вопросы по тегам