简体   繁体   中英

Salesforce SOQL Query Fields

I'm trying to query Salesforce SOQL API to get particular field for an object. I can get all fields back using the describe endpoint, but is there a way to get a particular field. For example how would I get the Ownership field and its PicklistValues on an Account?

Ownership is probably a custom field, or did you rename a standard one?

With describe calls it'd be something like Account.Ownership__c.getDescribe().getPicklistValues(); . See here for all field describe methods .

If you want to loop through all picklists available on object it'd be something like this:

List<String> objectNames = new List<String>{'Account'};

for(Schema.DescribeSObjectResult dsr : Schema.describeSObjects(objectNames)){
    // System.debug(dsr);
    String objectLabel = dsr.getLabel();
    Map<String, Schema.SObjectField> allFields = dsr.fields.getMap();
    System.debug(allFields);
    for(String fieldName : allFields.keyset()){
        Schema.DescribeFieldResult dfr = allFields.get(fieldName).getDescribe();
        if(!dfr.getPicklistValues().isEmpty()){
            System.debug(objectLabel + '.' + dfr.getLabel() + ': ' + dfr.getPicklistValues());
        }
    }
}

Account.Account Type: (Schema.PicklistEntry[getLabel=Prospect;getValue=Prospect;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Customer - Direct;getValue=Customer - Direct;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Customer - Channel;getValue=Customer - Channel;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Channel Partner / Reseller;getValue=Channel Partner / Reseller;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Installation Partner;getValue=Installation Partner;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Technology Partner;getValue=Technology Partner;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Other;getValue=Other;isActive=true;isDefaultValue=false;])
Account.Billing State/Province Code: (Schema.PicklistEntry[getLabel=Acre;getValue=AC;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Agrigento;getValue=AG;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Aguascalientes;getValue=AG;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Alabama;getValue=AL;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Alagoas;getValue=AL;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Alaska;getValue=AK;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Alberta;getValue=AB;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Alessandria;getValue=AL;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Amapá;getValue=AP;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Amazonas;getValue=AM;isActive=true;isDefaultValue=false;], ...)
Account.Billing Country Code: (Schema.PicklistEntry[getLabel=Afghanistan;getValue=AF;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Aland Islands;getValue=AX;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Albania;getValue=AL;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Algeria;getValue=DZ;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Andorra;getValue=AD;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Angola;getValue=AO;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Anguilla;getValue=AI;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Antarctica;getValue=AQ;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Antigua and Barbuda;getValue=AG;isActive=true;isDefaultValue=false;], Schema.PicklistEntry[getLabel=Argentina;getValue=AR;isActive=true;isDefaultValue=false;], ...)

If you want to use SOQL to pull this - you can query it 1 field at a time, it'll be in FieldDefinition . You might have trouble doing it in normal Apex SOQL though, you'd need Tooling API callout I think. Something like /services/data/v48.0/tooling/query?q=SELECT QualifiedApiName, Metadata FROM FieldDefinition WHERE EntityDefinition.QualifiedApiName = 'Account' AND QualifiedApiName = 'Ownership__c'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM