Trying to perform a SOQL query to retrieve related
FeedItems
andFeedComments
(on the related FeedItems) to my sObject and I retrieved a warning that multi-level queries aren’t allowed.Can anyone think of an optimization that will reduce the risk of overflowing script statements and allow me to retrieve related
FeedItems
and theFeedComments
related to those itemsList<myObject> sObjectsWithComments = [SELECT Id (SELECT Id,Body,ParentId, (SELECT Id, CommentBody, FeedItemId FROM FeedComments) FROM Feeds) FROM myObject];
If this isn’t achievable it’s still possible to manually selected the
FeedComment
and create a map, and do a manually association, but I really think this is something the database should be responsible for.Update
I guess I should also mention some of the difficult requirements:
- List item: In any given instance the page I’m working with may have
over 100 object records- I need count the number of
FeedItems
andFeedComments
that have been created by another user since aLastVisit__c
field on the parent object. Hence the issue with loopingSo I have a goal of something more akin too (psuedo-code):
List<myObject> sObjectsWithComments = [SELECT Id,LastVisit__c (SELECT Id,Body,ParentId, (SELECT Id, CommentBody, FeedItemId, CreatedDate FROM FeedComments WHERE CreatedDate > Parent.LastVisit__c) FROM Feeds WHERE CreatedDate > Parent.LastVisit__c) FROM myObject];
Answer
Separate the feed from the object to avoid a nested query.
List<FeedItem> feedWithComments = [SELECT Id,Body,ParentId, (SELECT
Id, CommentBody, FeedItemId FROM FeedComments) FROM
FeedItem WHERE ParentId IN (SELECT Id FROM
myObject WHERE Field = 'value')];
Attribution
Source : Link , Question Author : jordan.baucke , Answer Author : E.J. Wilburn