【问题标题】:How do I retrieve a related object using a Lookup field in Apex?如何使用 Apex 中的查找字段检索相关对象?
【发布时间】:2016-02-18 17:03:32
【问题描述】:

我有一个插入机会的触发器:

trigger OpportunityInsertTrigger on Opportunity (before insert) {
    System.debug('Triggered on insert of opportunity. Updating blockchain...');
    for (Opportunity opp : Trigger.new) {
        List<DNBCompany__c> retrievedCompany = [SELECT Id, Name, Duns__c FROM DNBCompany__c WHERE Id = :opp.DNBCompany__c];
        DNBCompany__c company = retrievedCompany.get(0);
        String duns = (String) company.get('Duns__c');            
    }
}

我有一个名为 DNBCompany 的自定义对象,它通过 Opportunity 中的查找关系 (DNBCompany__c) 链接。

如何检索与 opp 关联的 DNBCompany?

[编辑以反映下面的答案]

【问题讨论】:

    标签: salesforce apex


    【解决方案1】:

    你可以这样做:

    for (Opportunity opp : Trigger.new)
    {       
        DNBCompany__c retrievedCompany = [SELECT Id, Name FROM DNBCompany__c WHERE Id = :opp.DNBCompany__c];
    }
    

    由于查找字段将是您要检索的公司的 Id,因此您可以使用内联 SOQL 查询来取回关联的对象。

    请记住,您必须在 SOQL 查询中引用您希望处理的任何其他字段。

    【讨论】:

    • 没有更直接的方法来取消引用查找字段吗? IE。 opp.get('DNBCompany__c')?
    • 这给了我一个空值:DNBCompany__c company = (DNBCompany__c) opp.get('DNBCompany__c');
    • 尝试了上面的 SOQL 查询,它抱怨类型 'DNBCompany': DNBCompany retrievedCompany = [SELECT Id, Name, Duns__c FROM DNBCompany__c WHERE Id = :opp.DNBCompany__c]; '无效类型:DNBCompany'
    • 肯定有一个自定义对象“DNBCompany”,API 名称为“DNBCompany__c”
    • 是的,因为我没有您的自定义对象,所以我认为提供一个示例会有所帮助。 API 级别名称确实需要作为检索到的对象类型进行引用,因此我已更新以反映这一点。
    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2018-10-15
    • 1970-01-01
    • 2013-06-20
    • 2012-08-07
    • 2021-10-14
    相关资源
    最近更新 更多