Salesforce 如何使用Apex中的查找字段检索相关对象?

Salesforce 如何使用Apex中的查找字段检索相关对象?,salesforce,apex,Salesforce,Apex,我有机会插入的触发器: trigger OpportunityInsertTrigger on Opportunity (before insert) { System.debug('Triggered on insert of opportunity. Updating blockchain...'); for (Opportunity opp : Trigger.new) { List<DNBCompany__c> retrievedCompany

我有机会插入的触发器:

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');            
    }
}
trigger Opportunity InsertTrigger on Opportunity(插入前){
System.debug('在插入商机时触发。更新区块链…');
for(Opportunity opp:Trigger.new){
List retrievedCompany=[从DNBCompany\uuuu c中选择Id、名称、Duns\uu c,其中Id=:opp.DNBCompany\uu c];
DNBCompany\uuu c company=retrievedCompany.get(0);
String duns=(String)company.get('duns____c');
}
}
我有一个名为DNBCompany的自定义对象,它通过Opportunity中的查找关系(DNBCompany_u_c)链接

如何检索与opp关联的DNB公司


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

您可以这样做:

for (Opportunity opp : Trigger.new)
{       
    DNBCompany__c retrievedCompany = [SELECT Id, Name FROM DNBCompany__c WHERE Id = :opp.DNBCompany__c];
}
由于lookup字段将是您要检索的公司的
Id
,因此您可以使用内联SOQL查询获取相关对象


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

您可以这样做:

for (Opportunity opp : Trigger.new)
{       
    DNBCompany__c retrievedCompany = [SELECT Id, Name FROM DNBCompany__c WHERE Id = :opp.DNBCompany__c];
}
由于lookup字段将是您要检索的公司的
Id
,因此您可以使用内联SOQL查询获取相关对象


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

没有更直接的方法取消对查找字段的引用吗?例如,opp.get('DNBCompany_uuc')?这给了我一个空值:DNBCompany_uc company=(DNBCompany_uc)opp.get('DNBCompany_uc');尝试了上面的SOQL查询,但它抱怨类型为“DNBCompany”:DNBCompany retrievedCompany=[从DNBCompany_uuC中选择Id、名称、Duns_uC,其中Id=:opp.DNBCompany_uC];'无效类型:DNBCompany'肯定有一个自定义对象“DNBCompany”,API名称为“DNBCompany_uu____c”是的,因为我没有您的自定义对象,所以我想提供一个示例会有所帮助。API级别名称确实需要被引用为检索到的对象类型,因此我进行了更新以反映这一点。是否有更直接的方法取消对查找字段的引用?例如,opp.get('DNBCompany_uuc')?这给了我一个空值:DNBCompany_uc company=(DNBCompany_uc)opp.get('DNBCompany_uc');尝试了上面的SOQL查询,但它抱怨类型为“DNBCompany”:DNBCompany retrievedCompany=[从DNBCompany_uuC中选择Id、名称、Duns_uC,其中Id=:opp.DNBCompany_uC];'无效类型:DNBCompany'肯定有一个自定义对象“DNBCompany”,API名称为“DNBCompany_uu____c”是的,因为我没有您的自定义对象,所以我想提供一个示例会有所帮助。API级别名称确实需要作为检索到的对象类型引用,因此我已经进行了更新以反映这一点。