Ok, someone will correct me if I am wrong as I do not use that method very often and I can only get it to work when including the __r.Name in the query which the trigger does not have. I do not think you can use it in this scenario. You are going to have to get a Set<ID> for all the Production_Shift__c and the create a map to use for the values i.e. Set<ID> parentIDs = New Set<ID>(); for(Inventory_Transaction__c invTrans : Trigger.new) { if(invTrans.Production_Shift__c != null) parentIDs.add(invTrans. Production_Shift__c); } Map<ID,Production_Shift__c> shitMap = New Map<ID,Production_Shift__c>([Select ID, OtherFields From Production_Shift__c Where ID IN :parentIDs]); Then cycle through the trigger records again and use the map to get your values for(Inventory_Transaction__c invTrans : Trigger.new) { If(shiftMap.containsKey(invTrans.Production_Shift__c){ //If is probably not necessary as they should be there //Do your stuff } }