function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Santhosh Kon 5Santhosh Kon 5 

Hi Community had written one trigger which displays the child record count(student object) on parent obect (Teacher) below.Code has no errors but output is not coming while inserting or deleting or updating records on child object(student)

trigger studentcount1 on Student__c (after insert,after update,after delete,after  undelete) {
    set<ID> parentID=new set<ID>();
    List<Teacher__c> ParentQueryList=new list<Teacher__c>();
    List<Teacher__c> ParentToupdate=new list<Teacher__c>();
    If(Trigger.isinsert|| Trigger.isupdate||Trigger.isundelete)
    {
    for(student__c acc:Trigger.new)
    {
        if(acc.subject__r.id!=null)
        {
        parentID.add(acc.subject__r.id);
        }
    }
    }
    If(Trigger.isdelete){
        for(student__c acc:Trigger.old)
        {
           if(acc.subject__r.id!=null)
        {
        parentID.add(acc.subject__r.id);
        } 
            
        }
    }
      if(parentID.size()>0)
      
    ParentQueryList=[select id,name,childcount__c,(select id,name,subject__c from students__r) from Teacher__c where ID in :parentID];
   system.debug('ParentQueryList--->'+ParentQueryList);
   
    for(Teacher__c tc:ParentQueryList)
    {
        tc.childcount__c=tc.students__r.size();
        ParentToupdate.add(tc);
    }
    if(ParentToupdate.size()>0)
    {
    update ParentToupdate;
    }
  
    
        
         
        
        
 

}
Best Answer chosen by Santhosh Kon 5
PreyankaPreyanka
Hello Santhosh,

Could you please let me know whether subject__r is the lookup relationship name with Teacher object from Student? If so please change your code:
if(acc.subject__r.id!=null)
{
        parentID.add(acc.subject__r.id);
}


to
if(acc.subject__c!=null)
{
        parentID.add(acc.subject__c);
}



Below is the full code: 
trigger studentcount1 on Student__c (after insert,after update,after delete,after  undelete) {
    set<ID> parentID=new set<ID>();
    List<Teacher__c> ParentQueryList=new list<Teacher__c>();
    List<Teacher__c> ParentToupdate=new list<Teacher__c>();
    if(Trigger.isinsert|| Trigger.isupdate||Trigger.isundelete)
    {
        for(student__c acc:Trigger.new)
        {
            if(acc.subject__c!=null)
            {
                parentID.add(acc.subject__c);
            }
        }
    }
    if(Trigger.isdelete){
        for(student__c acc:Trigger.old)
        {
            if(acc.subject__c!=null)
            {
                parentID.add(acc.subject__c);
            } 
            
        }
    }
    if(parentID.size()>0){        
        ParentQueryList=[select id,name,childcount__c,(select id,name,subject__c from students__r) from Teacher__c where ID in :parentID];
        system.debug('ParentQueryList--->'+ParentQueryList);
        
        for(Teacher__c tc:ParentQueryList)
        {
            tc.childcount__c=tc.students__r.size();
            ParentToupdate.add(tc);
        }
        if(ParentToupdate.size()>0)
        {
            update ParentToupdate;
        }
    }
    
}

Thanks
Preyanka