All You Need to Know About SOSL and Related Records in Apex
In this blog, we will discuss what are related records in Salesforce and what we understood by SOSL in apex.
What are Related Records in Apex?
Inserting Related Records
Example :
Account acc = new Account(Name=’abc’, Phone = ‘123456’); insert acc; Contact con = new Contact(Account=acc.Id, FirstName = ‘abc’ , LastName = ‘xyz’, Phone = ‘12345’); Insert con;
Updating Related Records
Contact con = [SELECT Id, Name,Account.Phone FROM Contact WHERE Name = ‘abc’ AND AccountId!=Null AND Account.Name = ‘Account1’]; Con.Phone=’111’; Con.Account.Phone=’2222’; update con; update con.Account;
Don't forget to check out: Learn All About Salesforce Apex Programming
Now, let’s move to SOSL!
What is SOSL in Apex?
- SOSL stands for Salesforce Object Search language.
- It is used to perform a text search in records.
- We can use SOSL to search fields across multiple sObjects records.
- SOQL is used to retrieve records for a single object whereas use SOSL to search fields across multiple objects.
Syntax
Find ‘SearchQuery’ [IN SearchGroup] [RETURNING ObjectsAndFields];
What is a SearchQuery?
- Single Word: It should be enclosed in single quotes.
- Phrase: It is having multiple words and should be enclosed in double quotes.
What is a SearchGroup?
SearchGroup is optional.
- The default is ALL FIELDS.
- You can choose from the following search groups:
- ALL FIELDS
- NAME FIELDS
- EMAIL FIELDS
- PHONE FIELDS
- SIDEBAR FIELDS
ObjectsAndFields
- ObjectsAndFields is optional.
- It is the information to return in the search result – a list of one or more sObjects and within each sObject, list of one or more fields, with optional values to filter against.
- If not specified the search result contain the IDs of all objects found.
Check out another amazing blog by Bhawana here: All You Need to Know About Database Class Methods to Perform DML Operations
Execute Anonymous Window
List<List<sObject>> searchList = [FIND ‘Cloud’ IN ALL FIELDS RETURNING Account(Name),Contact(FirstName, Lastname, Email)];
Query Editor
FIND {Cloud} IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName, Email)];
For example:
List<List<sObject>> searchList = [FIND ‘Abc’ IN ALL FIELDS RETURNING Account(Name), Contact(FirstName,LastName,Email)]; List<Account> accList = new List<Account>(); List<Contact> conList = new List<Contact>(); accList = (List<Account>) searchList[0]; conList = (List<Contact>) searchList[1]; for(Account acc : accList) { System.debug(‘Name =>' + acc.Name); } for(Contact con : conList) { System.debug(con.FirstName + ‘ ‘ + con.LastName); }
So, this is all about related records in apex and SOSL. I hope this information is helpful to you.
Responses