2015-03-13 76 views
3

我一直停留一段时间,因为在案件逻辑钩我无法加载contacts_cases关系,我与其他客户关系所做的,就像这样:我在哪里可以找到SugarCRM中默认关系的名称?

$bean->load_relationship('cases_lines'); 
$lines = $bean->cases_lines->getBeans(); 

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

首先是工作,后者是不。
我发现我用错了名字,因为它是一个默认的关系,它的名字是“接触”和我应该不是“contacts_cases”,所以我改变了这样的代码:

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

现在它的工作完美。
我没有在文档中找到默认和自定义关系之间的命名区别,我发现上面的解决方案只调试SugarBean方法'load_relationship'并打印出加载的关系。

这行代码

error_log('LOADED RELATIONSHIPS '.print_r($this->loaded_relationships, true)); 

打印出来

Array\n(\n [0] => cases_lines\n [1] => contacts\n)\n 

在工作室的关系显示为“contacts_cases”,仅在我发现名称为“接触”是在文件中的模块的地方/ Cases/vardefs.php

'contacts' => 
array (
    'name' => 'contacts', 
    'type' => 'link', 
    'relationship' => 'contacts_cases', 
    'source'=>'non-db', 
     'vname'=>'LBL_CONTACTS', 
), 

此外,在关系表中relationship_name为'conta cts_cases'。

有什么地方可以看到调用load_relationship时必须使用的真实姓名,还是唯一的解决方案是在vardefs中查找?

回答

0

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

请注意,根据您使用的对象,自定义关系将被称为不同的事情。例如,定制模块之间的定制一对多关系膳食成分可能在膳食方面被命名为key_meals_ingredients_meals,在膳食方面可能命名为key_meals_ingredients_ingredients

您还可以在使用Studio的用户界面中找到它们。导航到Studio中,然后导入到模块,然后导入到关系表中。关系表左侧的名称列是您之后的值。

+0

谢谢,当然有一个单独的文件看起来很有帮助,这很奇怪,我必须调用不同的默认和自定义关系(默认与字段名称,与关系名称自定义)。 我总是使用出现在Studio中的名字,这是我第一次注意到这种差异。 我检查了你的其他提示,并且我注意到我所有的自定义关系在双方都被称为相同,这个东西能否依赖于sugarcrm版本? – lyisia 2015-03-16 10:46:53

+0

关系是一个'vardef'或'relationship',并不是基于它是股票还是定制,而是基于创建时的惯例。尽管令人困惑,但您会从两方面找到股票关系。其中一部分是它是一种/多种还是多种/多种关系。无论哪种方式,这就是为什么检查缓存文件总是有帮助的:) – 2015-03-17 04:37:53

相关问题