使用对象关系访问另一个表中的字段

问题描述

我是 SalesForceSOQL 的新手,如果问题已经得到解答,请提前抱歉,如果是,请联系我。

我的 SOQL 查询的目的是获取所有合同信息以生成 PDF。

有表格:ContractContactAccount

在合同表中有字段Maitre_d_apprentissage__cMaitreApprentissageNom1__cMaitreApprentissagePrenom1__cApprenti__c、ApprentiNom__cApprentiPrenom__c

有关系:

  • Apprenti__rApprenti__c 链接Contact
  • Maitre_d_apprentissage__rMaitre_d_apprentissage__c 链接Contact

当我查看表时,我看到 MaitreApprentissageNom1__c 等于 Maitre_d_apprentissage__r.LastNameApprentiNom__c 等于 Apprenti__r。姓氏。所以我得出结论,我可以按照相同的原则从 Contact 表中获取 Apprenti__cMaitre_d_apprentissage__c 的其他信息。所以我添加到我的查询 Apprenti__r.Date_de_naissance__cMaitre_d_apprentissage__r.Date_de_naissance__c获取我的联系表中的 Date_de_naissance__c 字段。

我在结果中看到查询成功获取信息但某些值已更改列(第 6 行和第 7 行),您可以看到查询 1 和查询 2 之间的区别。在第一个查询中,我只返回 Apprenti__r.Date_de_naissance__c 在第二个查询中我返回 Apprenti__r.Date_de_naissance__cMaitre_d_apprentissage__r.Date_de_naissance__c

查询 1:

SELECT ApprentiNom__c,ApprentiPrenom__c,Apprenti__r.Date_de_naissance__c,MaitreApprentissageNom1__c,MaitreApprentissagePrenom1__c
FROM Contract

结果 1:

Result of query 1

查询 2:

SELECT ApprentiNom__c,MaitreApprentissagePrenom1__c,Maitre_d_apprentissage__r.Date_de_naissance__c
FROM Contract

结果 2:

Result of query 2

我想了解问题从何而来以及如何纠正。提前致谢。

解决方法

可能只是您的查询编辑器显示内容不正确。您可以看到它与对 Contact 表的 2 次查找混淆,为什么甚至还有一个列标题“Contact.Date_de_naissance__c”(以及为什么它出现两次)。而且它们没有按照您要求的顺序显示...

你用的是什么编辑器?您可以尝试内置“开发者控制台”或 http://workbench.developerforce.com/

你需要它做什么?在 Apex 字段顺序无关紧要,在 REST API 查询中,通过查找获取的值将作为 JSON 子对象出现,因此总有一种方法可以准确确定哪个值来自哪个关系。

在 Dev Console 中尝试运行它并检查它是否解决了您的担忧:

System.debug(JSON.serializePretty([SELECT 
    ApprentiNom__c,ApprentiPrenom__c,Apprenti__r.Date_de_naissance__c,MaitreApprentissageNom1__c,MaitreApprentissagePrenom1__c,Maitre_d_apprentissage__r.Date_de_naissance__c
FROM Contract]));

然后添加 Maitre_d_apprentissage__r.LastName 进行查询,看看发生了什么变化,保持原样。