Я подозреваю, что проблема в том, что вы повторно используете ранее пустой бин, для которого вы уже загрузили ту же ссылку, используя load_relationship()
раньше.
При втором вызове load_relationship()
, возможно, Sugarвозвращает кэшированный результат первого вызова (поскольку ссылка уже помечена как загруженная), поэтому снова возвращает тот же пустой массив.
Поэтому вместо использования
$bean->retrieve_by_string_fields(array(
"id" => $id
));
Iпредложил бы создать новый компонент, например, используя
if (empty($id)) {
return false;
}
$bean = BeanFactory::retrieveBean($module, $id);
if (!$bean) {
return false;
}
(который на самом деле не должен быть слишком медленным, поскольку компонент, вероятно, уже кэширован)
Примечания:
- Ваши имена переменных несколько сбивают с толку.
$linkedRelationshipName
и $linkedModule
не должны содержать ни имени отношения, ни имени модуля, но имя поля типа ссылки.
РЕДАКТИРОВАТЬ:
Повторно: Документация там может вводить в заблуждение, но load_relationship()
делает не ожидает имя отношения в качестве параметра.Он ожидает, что имя ссылки !.
от data/SugarBean.php
:
/**
* Loads the request relationship. This method should be called before performing any operations on the related data.
*
* This method searches the vardef array for the requested attribute's definition. If the attribute is of the type
* link then it creates a similary named variable and loads the relationship definition.
*
* @param string $link_name link/attribute name.
*
*@return nothing.
*/
function load_relationship($link_name)
Так что не забудьте проверить VarDefs каждого модуля на правильное имя ссылки.
Например,
- имя отношения:
accounts_contacts
- поле ссылки для этого отношения в учетной записи:
contacts
,
, поэтому вы должны звонить $accountBean->load_relationship('contacts')
- поле ссылки для этого отношения в контакте:
accounts
,
, поэтому вы должны звонить $contactBean->load_relationship('accounts')
Примечание: имена ссылок в основном произвольны для разных модулей, не полагайтесь на то, что они являются строчными / единственными / множественными числами связанного модуля.В некоторых случаях (и для пользовательских отношений) их не будет.