访问触发器处理程序类中的父对象字段

时间:2017-03-23 14:55:21

标签: triggers salesforce apex

我正在为一个对象的后插入触发器编写一个触发器处理程序类'。在将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

           }
    }

1 个答案:

答案 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) {
            ...
            ...
        }
        ...
        ...
    }
}