function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
DbjensenDbjensen 

Traversing lookup field

Hello - I have a for loop that adds a string and Id to a map. This field in the map Field_Agent__r. is a lookup field. The Id keeps coming back as null.

Any idea why? I verified that the Field_Agent__c and User__c is populated. 

Map<String, Id> fieldAgentUserIdMap = new Map<String, Id>(); //Hold Field Agent Username

for(Lead newLead : newlyCreateLeads){
           
                fieldAgentUserIdMap.put(newLead.Field_Agent_SOB__c, newLead.Field_Agent__r.User__c);

        }
        
        System.debug('Field agent in map '+fieldAgentUserIdMap);

DEBUG|Field agent in map {1234567=null}
Best Answer chosen by Dbjensen
Shiraz HodaShiraz Hoda

Hi,

Please use below code to solve your issue and kindly mark as best answer.

Map<String, Id> fieldAgentUserIdMap = new Map<String, Id>();
Set<Id> setFieldAgentId = new set<Id>();
for(Lead newLead : Trigger.New){
 setFieldAgentId.add(newLead.Field_Agent__c);      
  
}

map<id,id>	fieldAgentusermap = new map<id,id>();	
	
for(Field_Agent__c fa:[select id,User__c from Field_Agent__c where id IN :setFieldAgentId]){

fieldAgentusermap.put(fa.id,fa.user__C);
}
for(Lead newLead : Trigger.New){
	   
fieldAgentUserIdMap.put(newLead.Field_Agent_SOB__c, fieldAgentusermap.get(newLead.Field_Agent__c));

	}

All Answers

AnkaiahAnkaiah (Salesforce Developers) 
Hi,

Directly you can't able to refer the related fields in the trigger.new context variable.

 
Map<String, Id> fieldAgentUserIdMap = new Map<String, Id>(); //Hold Field Agent Username

for(Lead newLead : newlyCreateLeads){
           
                fieldAgentUserIdMap.put(newLead.Field_Agent_SOB__c, newLead.Field_Agent__c);

        }

map<id,id>	filedagentusermap = new map<id,id>();	
		
for(Field_Agent__c fa:[select id,User__c from Field_Agent__c where id=:fieldAgentUserIdMap.values()]){

filedagentusermap.put(fa.id,fa.user__C);
}

If this, helps, Please mark it as best answer.

Thanks!!​​​​​​​
 
Shiraz HodaShiraz Hoda

Hi,

Please use below code to solve your issue and kindly mark as best answer.

Map<String, Id> fieldAgentUserIdMap = new Map<String, Id>();
Set<Id> setFieldAgentId = new set<Id>();
for(Lead newLead : Trigger.New){
 setFieldAgentId.add(newLead.Field_Agent__c);      
  
}

map<id,id>	fieldAgentusermap = new map<id,id>();	
	
for(Field_Agent__c fa:[select id,User__c from Field_Agent__c where id IN :setFieldAgentId]){

fieldAgentusermap.put(fa.id,fa.user__C);
}
for(Lead newLead : Trigger.New){
	   
fieldAgentUserIdMap.put(newLead.Field_Agent_SOB__c, fieldAgentusermap.get(newLead.Field_Agent__c));

	}
This was selected as the best answer
DbjensenDbjensen
Thanks, all for the help!