Orm Apex-SalesForce-通过连接对象访问父对象字段

Orm Apex-SalesForce-通过连接对象访问父对象字段,orm,salesforce,apex-code,junction-table,Orm,Salesforce,Apex Code,Junction Table,大家好 我正在Force.com平台上定制一些功能。我有个问题要问你;我不太确定这是否可能 我有什么2个自定义对象-abc和pqr。Abc是标准对象科目和pqr之间的连接对象,即科目是Abc的父项,然后pqr是Abc的父项。我正在通过这些对象将所有内容检索到Account类型的列表中,即从Account对象检索 我需要什么我可以访问Apex中的abc对象,即帐户的第一个子对象。是否有可能通过帐户访问pqr的字段 我尝试的内容:通过关系名-Account.abc\u r[0].pqr\u r[0]

大家好

我正在Force.com平台上定制一些功能。我有个问题要问你;我不太确定这是否可能

我有什么2个自定义对象-abc和pqr。Abc是标准对象科目和pqr之间的连接对象,即科目是Abc的父项,然后pqr是Abc的父项。我正在通过这些对象将所有内容检索到Account类型的列表中,即从Account对象检索

我需要什么我可以访问Apex中的abc对象,即帐户的第一个子对象。是否有可能通过帐户访问pqr的字段

我尝试的内容:通过关系名-Account.abc\u r[0].pqr\u r[0].FIELDNAME访问对象


但它没有起作用。一些salesforce/apex开发人员可以帮我吗?

您应该能够使用子查询获得所需的信息。这里真正的问题是如何设置查询。您的查询需要访问数据模型的所有级别,才能使其可用。如果您依赖于触发器或标准控制器中返回的数据,那么我建议要求account对象访问附加信息

因此,我希望看到以下几点:

List<Account> accounts = [SELECT Id, Name, (SELECT Id, pqr__r.Id, pqr__r.Name FROM abc__r) FROM Account];

for (Account acct : accounts) {
    string someValue = acct.abc__r[0].pqr__r.Name;
}
请记住,作为最佳实践,您不应该像我上面所做的那样访问子记录,因为如果没有ABC记录,该对象将为空,因此作为最佳实践,您将希望提前对此进行测试。PQR对象数据也是如此。

这个问题的答案如下:


注意:这里,abc_r是对象abc_c与Account的关系。如果您有任何问题,请对此进行评论。

那么哪部分不起作用?您是遇到了错误,还是解决方案没有提供您想要的结果。如果您能帮助我了解更多细节,我很乐意调整我的答案。我无法使用“.”运算符访问字段。如果我调试了您在开始时创建的列表,它只显示Id和名称,而不显示pqr中的任何其他内容。我不太清楚这是为什么,但查询在workbench-SOQL execute中运行良好,但当我将同一查询分配给account类型的列表时,它只返回account字段以外的任何内容。有没有办法创建一个类型为“Multilple objects”的列表,以便该列表可以从SOQL获取所有值?
List<Account> accounts = [SELECT Id, Name, (SELECT Id, pqr__r.Id, pqr__r.Name FROM abc__r) FROM Account];

for (Account acct : accounts) {
    for(Abc__c abc : acct.abc__r)
       {
          String someValue = abc.pqr__r.Name;
       }
}