首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里可以在SugarCRM中找到默认关系的名称?

在哪里可以在SugarCRM中找到默认关系的名称?
EN

Stack Overflow用户
提问于 2015-03-13 11:40:37
回答 2查看 2.4K关注 0票数 4

我被困了一段时间,因为在逻辑钩子中,我无法像加载另一个自定义关系那样加载contacts_cases关系,如下所示:

代码语言:javascript
复制
$bean->load_relationship('cases_lines');
$lines = $bean->cases_lines->getBeans();

$bean->load_relationship('contacts_cases');
$contacts->$bean->contacts_cases->getBeans();

第一种是有效的,而后者则不是。

我发现我使用了错误的名称,因为这是一个默认的关系,它的名称是“联系人”,而不是我所想的“contacts_cases”,所以我修改代码如下:

代码语言:javascript
复制
$bean->load_relationship('contacts');
$contacts->$bean->contacts->getBeans();

现在它运转得很好。

我在文档中没有发现默认关系和自定义关系之间的命名差异,我发现上面的解决方案只是调试SugarBean方法'load_relationship‘并打印出加载的关系。

这一行代码

代码语言:javascript
复制
error_log('LOADED RELATIONSHIPS '.print_r($this->loaded_relationships, true));

印出

代码语言:javascript
复制
Array\n(\n    [0] => cases_lines\n    [1] => contacts\n)\n

在Studio中,这种关系以“contacts_Case”的形式出现,我在文件模块/Cases/vardefs.php中找到“联系人”的唯一位置

代码语言:javascript
复制
'contacts' =>
array (
  'name' => 'contacts',
  'type' => 'link',
  'relationship' => 'contacts_cases',
  'source'=>'non-db',
      'vname'=>'LBL_CONTACTS',
),

在relationships表中,relationship_name也是'contacts_cases‘。

有没有地方可以看到我在调用load_relationship时必须使用的实名,或者唯一的解决方案是查看vardefs?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-13 21:25:22

最简单的单一来源是查看缓存目录,因为这将所有自定义和开箱即用的字段和关系合并到一个大数组中。要从帐户角度查看所有关系,请检查cache/modules/Accounts/Accountsvardefs.php并查找relationships键和type参数为link的任何fields。您会发现“股票”关系,如contactsopportunities,以及任何和所有自定义关系都内置在该数组中。

请注意,定制关系将根据您正在处理的对象而被称为不同的东西。例如,自定义模块、膳食和配料之间的一对多关系可能被命名为key_meals_ingredients_meals (在Meals侧),key_meals_ingredients_ingredients (在配料侧)。

您还可以使用Studio在用户界面中找到这些内容。导航到Studio,然后导航到模块,然后导航到Relationship表。Relationship表左侧的Name列是您要查找的值。

票数 2
EN

Stack Overflow用户

发布于 2021-04-10 11:15:44

若要获取load_relationship的所有可能值的列表,请使用以下代码片段:

代码语言:javascript
复制
$rels = [];
foreach ($bean->getFieldDefinitions() as $key=>$val) {
    if (isset($val['type']) && $val['type'] === 'link') {
        $rels[] = $key;
    }
}

这从一个$bean开始(例如,在一个逻辑钩子中),并生成一个具有所有有效关系名的rels[]数组。

这段代码意味着作为临时帮助,使用它获取列表并选择正确的值,然后删除这段代码。

这使用了与load_relationship函数相同的定义集,因此它应该是准确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29031308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档