How to retrieve User.IsPortalEnabled info from CreatedBy field on a object like Feed Item using Apex and SOQL in Salesforce
The syntax for polymorphic queries doesn’t require the relationship name
You have:
SELECT Id, TYPEOF CreatedBy WHEN User THEN Created.Name, Created.IsPortalEnabled END
FROM Feeditem
You can use:
SELECT Id, TYPEOF CreatedBy WHEN User THEN Name, IsPortalEnabled END
FROM Feeditem
To execute in Apex:
for (FeedItem feedItem: [SELECT Id, TYPEOF CreatedBy WHEN User THEN Name, IsPortalEnabled END
FROM Feeditem]) {
User user = (User) feedItem.CreatedBy;
system.debug(user.Name + ' IsPortalEnabled=' +user.IsPortalEnabled);
}
Note you have to cast to User
to get the polymorphic relationship object. If using more than one polymorphic object in the query, use instanceOf
operator on createdBy
to decide what object to cast to.
Read more here: Source link