• Brooks Bruce 47
  • NEWBIE
  • 20 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 2
    Replies
Why is it necessary to have a nested for loop to go through results when a query from a parent sObject includes fields from the child sObject, but not when the query is from the child sObject and includes parent fields? 

Thank you.
I've got a trigger which calls a method in a class designed so that the Hiring Manager (lookup field on Position) automatically follows their Positions in Chatter:
 
Class:
public class SubscriptionsClass { 
public static void HiringManagerSubscribeNewPosition(List <Position__c> positions) {
System.Debug('HiringManagerSubscribeNewPosition: Entering');
List <EntitySubscription> subscriptions = new List <EntitySubscription>();
for (Position__c pos :positions) {
EntitySubscription eSubs = new EntitySubscription(parentid = pos.id, subscriberid = pos.Hiring_Manager__c);
subscriptions.add(eSubs);
Database.insert(subscriptions);
}
}
 
Trigger:
trigger PositionTrigger on Position__c (after insert) {
SubscriptionsClass.HiringManagerSubscribeNewPosition(Trigger.new);
}
 
Works great but I can't figure out how to account for the possibility that a Hiring Manager for a Position could change; any ideas? Thanks for any help and advice.
Why is it necessary to have a nested for loop to go through results when a query from a parent sObject includes fields from the child sObject, but not when the query is from the child sObject and includes parent fields? 

Thank you.
I've got a trigger which calls a method in a class designed so that the Hiring Manager (lookup field on Position) automatically follows their Positions in Chatter:
 
Class:
public class SubscriptionsClass { 
public static void HiringManagerSubscribeNewPosition(List <Position__c> positions) {
System.Debug('HiringManagerSubscribeNewPosition: Entering');
List <EntitySubscription> subscriptions = new List <EntitySubscription>();
for (Position__c pos :positions) {
EntitySubscription eSubs = new EntitySubscription(parentid = pos.id, subscriberid = pos.Hiring_Manager__c);
subscriptions.add(eSubs);
Database.insert(subscriptions);
}
}
 
Trigger:
trigger PositionTrigger on Position__c (after insert) {
SubscriptionsClass.HiringManagerSubscribeNewPosition(Trigger.new);
}
 
Works great but I can't figure out how to account for the possibility that a Hiring Manager for a Position could change; any ideas? Thanks for any help and advice.