我是Salesforce和SOQL的新手。
我想做一些可以在SQL中完成的事情:
select * from table
如何使用SOQL实现这一目标?
我无法使用Apex Code,因为我从PHP页面运行SOQL查询。
答案 0 :(得分:0)
您可以使用API提供的元数据来确定当前用户可以使用该对象的哪些字段。
请参阅Enterprise或Partner 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