我一直停留一段时间,因为在案件逻辑钩我无法加载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中查找?
谢谢,当然有一个单独的文件看起来很有帮助,这很奇怪,我必须调用不同的默认和自定义关系(默认与字段名称,与关系名称自定义)。 我总是使用出现在Studio中的名字,这是我第一次注意到这种差异。 我检查了你的其他提示,并且我注意到我所有的自定义关系在双方都被称为相同,这个东西能否依赖于sugarcrm版本? – lyisia 2015-03-16 10:46:53
关系是一个'vardef'或'relationship',并不是基于它是股票还是定制,而是基于创建时的惯例。尽管令人困惑,但您会从两方面找到股票关系。其中一部分是它是一种/多种还是多种/多种关系。无论哪种方式,这就是为什么检查缓存文件总是有帮助的:) – 2015-03-17 04:37:53