我是Salesforce和SOQL的新手。
我想做一些可以用SQL完成的事情:
select * from table
如何使用SOQL实现?
我将无法使用Apex代码,因为我从PHP页面运行SOQL查询。
您可以使用API提供的元数据来确定对象的哪些字段可供当前用户使用。
请参阅Enterprise或Partner WSDL的PHP Toolkit 20.0 DescribeSObject示例。您需要来自fields数组的Name
。将它们与逗号分隔符一起添加,以构成可访问字段的完整列表。
默认情况下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));