我可以创建一个用Salesforce对象填充的sql表吗?

问题描述 投票:0回答:1

Salesforce提供了一种获取所有对象(如客户,联系人等)并将其填充到SQL表中的某些列的方法,例如ObjectEntity,FieldName,FieldType吗?

salesforce apex salesforce-lightning
1个回答
0
投票

我很确定实现此目标的唯一方法是使用Schema.sObjectTypeSchema.sObjectFieldHere is a link to the documentation for getting all sObjects。基本上,您将调用Schema.getGlobalDescribe()方法,该方法将返回以sObject名称为键的sObjectTypes的映射。然后,您需要在每个sObjectType上调用getDesribe(),以从该Describe结果中获取对象的字段。您将再次需要在每个sObjectField上调用getDescribe()才能访问所需的列(例如FieldType)。 Here is the documentation on that您可以将每个DescribeFieldResult保存到一个列表中,该列表以sObject名称作为键进入>的映射,然后可以对它们进行操作...如果需要,可以将它们放在表中。请记住,这在CPU时间方面都是非常昂贵的。您甚至可能会遇到一些调速器限制。这是一个小示例,您可以在开发人员控制台中使用Execute Anonymous运行,在该控制台中,sObject名称及其所有字段名称和类型将被打印到调试日志中

Map<String, sObjectType> objects = Schema.getGlobalDescribe();
for(String objName : objects.keySet()){
    system.debug('=======' + objName + '=========\n Fields: ');
    sObjectType o = objects.get(objName);
    DescribeSobjectResult oDRes = o.getDescribe();
    Map<String, Schema.SObjectField> fields = dResult.fields.getMap();
    for(Schema.SObjectField f : fields.values()){
        DescribeFieldResult fDRes = f.getDescribe();
        system.debug('name: ' + fDRes.getName() + ' | type: ' + fDRes.getType());
    }
}

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.