问题描述
我在Salesforce中使用两个SOQL查询。
第一个查询:从用户中选择ID,名字,姓氏,其中Id ='00000ADFEDSFSRTGDR' 第二个查询:从UserLogin中选择IsFrozen,其中UserId ='00000ADFEDSFSRTGDR'
解决方法
不。如果您在User
或UserLogin
上使用“描述”调用,则会看到它们已链接,但描述结果中没有“ relationshipName”字段。这就是链接的方式,有点像普通数据库中的表别名。
// No going "up"
System.debug(UserLogin.UserId.getDescribe().getRelationshipName());
// And no going "down" either
for(Schema.ChildRelationship cr : User.SObjectType.getDescribe().getChildRelationships()){
if(cr.getChildSObject() == UserLogin.sObjectType && cr.getField() == UserLogin.UserId){
System.debug(cr);
System.debug(cr.getRelationshipName());
}
}
所以你可以做
SELECT Id,Name,(SELECT PermissionSet.Name FROM PermissionSetAssignments)
FROM User
因为PermissionSetAssignment.AssigneeId
具有RelationshipName。但不是
SELECT Id,(SELECT IsFrozen FROM UserLogin)
FROM User
“向上”也不起作用。 SELECT Account.Name FROM Contact
正常,但SELECT IsFrozen,User.Name FROM UserLogin
无效。再说一次-因为描述结果中没有relationshipName
。
您将不得不单独查询并以Map<Id,User>
的形式将它们链接起来。