You need to sign in to do that
Don't have an account?
ShayneO
Best Practices for Querying Inside a Trigger
Hello - I'm fairly new to Apex and am hoping I could get some help/examples of how to properly query data from related objects inside of a trigger.
Essentially, my scenario is as such:
Objective - Whenever a ChildObject__c is created, I'd like to automatically create a new JunctionObect__c for each contact lookup field that is populated on ParentObject__c, and for each related Contact I'd also like to create a new JunctionObject__c for that Contact's Account.
my code looks like this:
trigger createJuntion on ChidObject__c (after insert) {
List<JunctionObject__c> insertList = new List<JunctionObject__c>();
for(ChildObject__c co : Trigger.new){
if (co.Contact__c != null ) {
JunctionObject__c jo = new JunctionObject__c();
jo.Contact__c = co.Contact__c;
jo.Company__c = co.Contact__r.AccountID;
insertList.add(rnContact);
}
insert inserList;
}
There are no errors thrown, but the Company field is not populated on the junction object. I understand that I probably need to query the Contact's accountID through an alternative means, but would like some direction as to how.
Thanks!!!
Essentially, my scenario is as such:
Objective - Whenever a ChildObject__c is created, I'd like to automatically create a new JunctionObect__c for each contact lookup field that is populated on ParentObject__c, and for each related Contact I'd also like to create a new JunctionObject__c for that Contact's Account.
my code looks like this:
trigger createJuntion on ChidObject__c (after insert) {
List<JunctionObject__c> insertList = new List<JunctionObject__c>();
for(ChildObject__c co : Trigger.new){
if (co.Contact__c != null ) {
JunctionObject__c jo = new JunctionObject__c();
jo.Contact__c = co.Contact__c;
jo.Company__c = co.Contact__r.AccountID;
insertList.add(rnContact);
}
insert inserList;
}
There are no errors thrown, but the Company field is not populated on the junction object. I understand that I probably need to query the Contact's accountID through an alternative means, but would like some direction as to how.
Thanks!!!
trigger createJuntion on ChidObject__c (after insert) {
List<JunctionObject__c> insertList = new List<JunctionObject__c>();
Set<Id> childobjectstoget = new set<id>();
for(childObject__c c : trigger.new)
{
if(co.contact__c!=null)
{
childobjectstoget.add(c.id);
}
}
Map<Id,childobject__c> childobjects = new map<id,childobject__c>([select id, contact__c, contact__r.accountid from childobject__c]);
for(ChildObject__c co : Trigger.new){
if (co.Contact__c != null && childobjects.containskey(co.Id) {
JunctionObject__c jo = new JunctionObject__c();
jo.Contact__c = co.Contact__c;
jo.Company__c = childobjects.get(co.Id).Contact__r.AccountID;
insertList.add(rnContact);
}
insert inserList;
}