使用Salesforce SOQL我可以使用以下内容获取所有者的ID:
SELECT Case.OwnerId
FROM Case
WHERE Case.CaseNumber = '00001234'
然后,我可以在此查询中获取拥有该案例的用户的用户详细信息:
SELECT User.Id, User.Name, User.Custom_Field__c
FROM User
WHERE User.Id = '001A0000001abc1DEF'
但是我不能让它在一个声明中工作,我认为这是因为所有者!=用户,即使在这种情况下所有者实际上是用户。我试过了:
SELECT Owner.Custom_Field__c
FROM Case
WHERE Case.CaseNumber = '00001234'
但是我收到一条错误,即Custom_Field__c不是有效字段。
答案 0 :(得分:5)
Case上的所有者是一种多态关系,它可以是多种不同类型之一。当发生这种情况然后使用SOQL-R时,您只能选择所指向类型共有的字段子集(这些字段都在名为“Name”的伪实体上公开),因此您将无法查询自定义用户上的字段。您必须对Case进行查询,然后收集所有者集并向用户和/或组进行查询以获取更详细的信息。
答案 1 :(得分:2)
您可以使用SOQL中的半连接执行此操作。我测试了它,即使所有者是多态的,它仍然有效:
SELECT Custom_Field__c
FROM User
WHERE Id IN (SELECT OwnerId
FROM Case
WHERE Case.CaseNumber = '00001234')