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

问题描述 投票:3回答:2

我是Salesforce和SOQL的新手。

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

select * from table

如何使用SOQL实现?

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

php sql salesforce soql
2个回答
0
投票

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

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


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;
        }
    }
}

Demo:如何查看输出打开Execute Anonymous窗口,然后执行下面的代码

String strQuery = GenerateDynamicSOQLQuery.getSOQLQuery('Account');
//strQuery += ' WHERE Industry = \'Banking\' LIMIT 1';
strQuery += ' LIMIT 1';
System.debug('Account Records ====>  '+Database.query(strQuery));
© www.soinside.com 2019 - 2024. All rights reserved.