使用SOQL选择Salesforce记录的所有字段

时间:2014-06-20 11:37:23

标签: php sql salesforce soql

我是Salesforce和SOQL的新手。

我想做一些可以在SQL中完成的事情:

select * from table

如何使用SOQL实现这一目标?

我无法使用Apex Code,因为我从PHP页面运行SOQL查询。

3 个答案:

答案 0 :(得分:0)

您可以使用API​​提供的元数据来确定当前用户可以使用该对象的哪些字段。

请参阅EnterprisePartner WSDL的PHP​​ Toolkit 20.0 DescribeSObject示例。你想要来自fields数组的Name。将它们与逗号分隔符一起附加,以生成可访问字段的完整列表。

答案 1 :(得分:0)

默认情况下,SOQL不支持选择所有文件
选择*来自sObject
请检查以下通用类,该类接受对象名称,基于对象名称,它以字符串形式给出SOQL查询。

顶点类:

public inherited sharing class GenerateDynamicSOQLQuery {

    public static string getSOQLQuery(String strObjectName) {
        if(!String.isBlank(strObjectName)) {
            String strQuery = 'SELECT ';
            list<Schema.DescribeSObjectResult> objDiscribe = Schema.describeSObjects(new List<String>{strObjectName});
            map<String, Schema.SObjectField> objFileds = objDiscribe[0].fields.getMap();
            list<String> lstOfFieldNames = new list<String>(objFileds.keySet());
            strQuery = strQuery + String.join(lstOfFieldNames, ', ') + ' FROM ' +strObjectName;
            return strQuery;
        }
        else {
            return null;
        }
    }
}

演示:如何查看输出
打开“执行匿名”窗口,然后执行以下代码

String strQuery = GenerateDynamicSOQLQuery.getSOQLQuery('Account');
//strQuery += ' WHERE Industry = \'Banking\' LIMIT 1';
strQuery += ' LIMIT 1';
System.debug('Account Records ====>  '+Database.query(strQuery));

答案 2 :(得分:0)

您可以使用 FIELDS() 作为完整的字段列表。例如:

SELECT FIELDS(ALL) FROM Account LIMIT 200
SELECT FIELDS(CUSTOM) FROM Account LIMIT 200
SELECT FIELDS(STANDARD) FROM Account

您还可以将 FIELDS() 与字段列表中的其他字段名称混合使用。例如:

SELECT Name, Id, FIELDS(CUSTOM) FROM Account LIMIT 200
SELECT someCustomField__c, FIELDS(STANDARD) FROM Account

注意:最大限制为 200 - 请参阅文档 here