【问题标题】:Apex - SalesForce - Accessing a Parent object field through Junction objectApex - SalesForce - 通过连接对象访问父对象字段
【发布时间】:2012-05-19 08:14:11
【问题描述】:

大家好,

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

我有什么?:2 个自定义对象 - abc 和 pqr。 Abc 是标准对象 Account 和 pqr 之间的连接对象,即 Account 是 abc 的父级,然后 Pqr 是 abc 的父级。我正在通过这些对象将所有内容检索到 Account 类型的 List 中(即来自 Account 对象)。

我需要什么?:我可以访问 Apex 中的 abc 对象,即 Account 的第一个孩子。有没有可能通过账号访问pqr的字段?

我尝试过的:通过关系名称访问对象 - Account.abc_r[0].pqr_r[0].FIELDNAME

但它没有奏效。 销售人员/顶级开发人员可以帮我解决这个问题吗?

【问题讨论】:

    标签: orm salesforce apex-code junction-table


    【解决方案1】:

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

    所以我希望看到以下内容:

    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 对象数据也是如此。

    【讨论】:

    • 那么哪个部分不起作用?您是遇到错误还是解决方案没有提供您正在寻找的结果。如果你能帮我提供更多细节,我很乐意调整我的答案。
    • 我无法使用“.”访问该字段操作员。如果我 System.Debug 您在开始时创建的列表,它只显示 Id 和名称,而不显示 pqr 中的任何其他内容。我不太清楚为什么会这样,但查询在工作台中运行良好 - SOQL 执行,但是当我将相同的查询分配给类型帐户的列表时,它除了帐户字段之外不返回任何内容。有没有办法创建一个“多个对象”类型的列表,以便该列表可以从 SOQL 中获取所有值?
    【解决方案2】:

    这个问题的答案如下:

    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;
           }
    }
    

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

    【讨论】:

      猜你喜欢
      • 2019-11-10
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多