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
RajashriRajashri 

Get the values from Subquery

Hi,

I am trying  to add Status value for wrapper class.Can anyone please tell me how to fetch the status value from Subquery and add it to wrapper class.Below code is giving me Invalid relationship error for highlighted line

for(Lead ld : CampaignMembers) {
                                   if ((ld.ActivityHistories.size() == 0) || ld.ActivityHistories.size() == null) {
                        lMemberWrappers.add(new MemberWrapper(ld.Phone, ld.getSObject('CampaignMembers').get('Status')));
                      
                        }



 [Select Id, Phone,(Select id, Status From CampaignMembers where CampaignId =:camp.Id  ),
        (Select Subject, Id,lastModifiedDate From ActivityHistories    order by LastModifiedDate DESC  LIMIT 1  )
        From Lead  where Id IN(select LeadId from campaignMember where campaignId =:camp.Id ) ];
 
BalajiRanganathanBalajiRanganathan
CampaignMembers can be multiple.

ld.CampaignMembers will return the list of CampaignMembers (List<CampaignMembers>).

you can try the below code to get the first record 
String status  = '';
if (!ld.CampaignMembers.isEmpty())  {
  status  = ld.CampaignMembers.get(0).Status;
}
lMemberWrappers.add(new MemberWrapper(ld.Phone, status));
 
RajashriRajashri
Thanks balaji..I am able to display the first record throgh this but i am trying to add Phone and Status field from Campaign Members Object to my VF page.How can i modify my for loop if i want to print Phone and Status field from campaign Members.

Below is my for loop

 for(Campaign c :[Select ID,(SELECT Id,CampaignId,Status  FROM CampaignMembers where CampaignId =:camp.Id) FROM campaign WHERE id=:camp.Id ]){
                   
              
              for(Lead ld : CampaignMembers) {
                   
              
                         if ((ld.ActivityHistories.size() == 0) || ld.ActivityHistories.size() == null) {
                      
                        lMemberWrappers.add(new MemberWrapper(ld.Phone,ld.CampaignMembers.get(0).Status));
                       
                        }}}

and SOQL Query is

CampaignMembers= [Select Id, Phone,(Select id, Status From CampaignMembers where CampaignId =:camp.Id  ),
        (Select Subject, Id,lastModifiedDate From ActivityHistories    order by LastModifiedDate DESC  LIMIT 1  )
        From Lead  where Id IN(select LeadId from campaignMember where campaignId =:camp.Id ) ];