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 - это имя отношения, а не имя таблицы.
Хорошего дня!