Find your content:

Search form

You are here

How to access field from related record via What or Who field?

 
Share

Accessing fields from related records via custom lookup fields works like this: object.lookup_field__r.Name This piece of code would return the Name of the related record via custom lookup field lookup_field__c.

I can see that What and Who on Task object are somehow different.

Is it possible to access a field via What or Who lookups in the same or similar manner like I mentioned above?

I used to access fields by querying related records by WhatId and WhoId but it gets quite complicated, I am searching for clean and short approach to solve this problem.


Attribution to: justasd

Possible Suggestion/Solution #1

One way could be to identify related object by its id in code or in formula field

example : - add a formula field and have this formula in it to get 'What' related object name

CASE(LEFT( WhatId , 3), '001', 'Account', '003','Contact','006','Opportunity','00Q','Lead','Other')

once you identify object, write a dynamic SOQL and use it.

let me know if it helps!


Attribution to: Megha

Possible Suggestion/Solution #2

PS Apologies, this is still documented as "Developer Preview", so this answer is more of an FYI. Just appears to be turned on in my developer edition org.

SOQL will sometime have "polymorphic" syntax to help query where a reference can be to various SObject types - see e.g. TYPEOF .

So if you have a Tasks where the WhoId references both Contact and Lead, you can run a query of this form to get the name for both types:

Task[] tasks = [select typeof Who when Contact then Name when Lead then Name end from Task];
for (Task t : tasks) {
    System.debug('>>> ' + t.Who.Name);
}

Attribution to: Keith C
This content is remixed from stackoverflow or stackexchange. Please visit https://salesforce.stackexchange.com/questions/34528

My Block Status

My Block Content