我正在为一个对象的后插入触发器编写一个触发器处理程序类'。在将trigger.new传递给处理程序类中的函数后,我能够访问A' s字段但它的父对象字段都是null。如何访问父对象字段而不从触发器本身传递Id以及trigger.new变量。
以下是示例触发器::
if(trigger.isInsert && Trigger.isAfter){
TriggerHandler.handleAfterInsert(trigger.new);
}
这里是处理程序类::
public class DedupeTriggerHandler{
public static void handleAfterInsert(List<A__c >AList) {
// accessing parent objects field here
}
}
答案 0 :(得分:0)
这样的事情会起作用吗?我在类中执行类似的操作来访问子对象记录。您基本上需要为A__c获取一组所有ID,然后执行SOQL查询以查看与A__c关联的子对象记录。下面,我使用“联系人”作为示例子对象。
public static void handleAfterInsert(List<A__c> AList) {
Set<Id> aIds = new Set<Id>(); //set for holding the Ids in AList ("trigger.new")
// 1. Get a list of all A__c Id's in the trigger
for (A__c ac : AList) {
// Add the Id to set
aIds.add(ac.Id);
System.Debug('^^^^^## A__c Id added to list: ' + ac.Id);
}
// 2. Loop through all A__c affected by trigger (using one SOQL query)
for (A__c ac : [SELECT Id, (SELECT Id, OwnerId FROM Contacts) FROM A__c WHERE Id in :aIds]) {
// You should now be able to see child table data here:
for (Contact c : ac.Contacts) {
...
...
}
...
...
}
}