Utilisation de SOQL et SOSL dans Salesforce

Partagez cet article

Objectifs

  • Comprendre les bases de SOQL (Salesforce Object Query Language) et de SOSL (Salesforce Object Search Language).
  • Apprendre à écrire des requêtes SOQL pour interroger des données spécifiques.
  • Apprendre à écrire des requêtes SOSL pour effectuer des recherches globales sur plusieurs objets.
  • Voir comment utiliser SOQL et SOSL dans les classes et déclencheurs Apex.

Prérequis

  • Un compte Salesforce. Vous pouvez en créer un gratuitement sur Salesforce Developer.
  • Connexion à votre compte Salesforce.

1. Introduction à SOQL et SOSL

SOQL (Salesforce Object Query Language)

SOQL est utilisé pour interroger les données stockées dans Salesforce. Il est similaire à SQL (Structured Query Language) mais spécifique à Salesforce.

SOSL (Salesforce Object Search Language)

SOSL est utilisé pour effectuer des recherches globales sur plusieurs objets et champs dans Salesforce.

2. Écriture de requêtes SOQL

Exemple de requête SOQL simple

Supposons que vous souhaitiez récupérer les noms et les numéros de téléphone de tous les comptes dans Salesforce.

List<Account> accounts = [SELECT Name, Phone FROM Account];
for (Account acc : accounts) {
    System.debug('Name: ' + acc.Name + ', Phone: ' + acc.Phone);
}

Exemple de requête SOQL avec condition

Récupérer tous les comptes dont l’industrie est “Technology”.

List<Account> techAccounts = [SELECT Name, Industry FROM Account WHERE Industry = 'Technology'];
for (Account acc : techAccounts) {
    System.debug('Name: ' + acc.Name + ', Industry: ' + acc.Industry);
}

Exemple de requête SOQL avec ordre

Récupérer les contacts triés par nom de famille.

List<Contact> contacts = [SELECT FirstName, LastName FROM Contact ORDER BY LastName];
for (Contact con : contacts) {
    System.debug('First Name: ' + con.FirstName + ', Last Name: ' + con.LastName);
}

Exemple de requête SOQL avec jointure

Récupérer les contacts et les noms de leurs comptes associés.

List<Contact> contactsWithAccounts = [SELECT FirstName, LastName, Account.Name FROM Contact];
for (Contact con : contactsWithAccounts) {
    System.debug('Contact Name: ' + con.FirstName + ' ' + con.LastName + ', Account Name: ' + con.Account.Name);
}

3. Écriture de requêtes SOSL

Exemple de requête SOSL simple

Recherche globale d’un mot-clé “Acme” dans tous les objets.

List<List<SObject>> searchResults = [FIND 'Acme' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)];
for (SObject sobj : searchResults[0]) {
    Account acc = (Account)sobj;
    System.debug('Account Name: ' + acc.Name);
}
for (SObject sobj : searchResults[1]) {
    Contact con = (Contact)sobj;
    System.debug('Contact Name: ' + con.FirstName + ' ' + con.LastName);
}

Exemple de requête SOSL avec filtre de champ spécifique

Recherche du mot-clé “John” dans les champs de prénom des contacts uniquement.

List<List<SObject>> searchResults = [FIND 'John' IN NAME FIELDS RETURNING Contact(FirstName, LastName)];
for (SObject sobj : searchResults[0]) {
    Contact con = (Contact)sobj;
    System.debug('Contact Name: ' + con.FirstName + ' ' + con.LastName);
}

4. Utilisation de SOQL et SOSL dans Apex

Exemple de méthode Apex utilisant SOQL

public class AccountHelper {
    public static List<Account> getTechnologyAccounts() {
        return [SELECT Name, Industry FROM Account WHERE Industry = 'Technology'];
    }
}

Exemple de méthode Apex utilisant SOSL

public class SearchHelper {
    public static List<Contact> searchContactsByName(String keyword) {
        List<List<SObject>> searchResults = [FIND :keyword IN NAME FIELDS RETURNING Contact(FirstName, LastName)];
        return (List<Contact>)searchResults[0];
    }
}

5. Utilisation de SOQL et SOSL dans des déclencheurs Apex

Exemple de déclencheur utilisant SOQL

Supposons que nous souhaitions ajouter une description à chaque nouveau compte créé, basée sur l’industrie.

trigger AccountTrigger on Account (before insert) {
    for (Account acc : Trigger.new) {
        if (acc.Industry != null) {
            acc.Description = 'This account is in the ' + acc.Industry + ' industry.';
        }
    }
}

Exemple de déclencheur utilisant SOSL

Recherche de contacts ayant des noms similaires à un nouvel enregistrement de contact pour vérifier les doublons.

trigger ContactTrigger on Contact (before insert) {
    for (Contact con : Trigger.new) {
        List<List<SObject>> searchResults = [FIND :con.LastName IN NAME FIELDS RETURNING Contact(FirstName, LastName)];
        if (!searchResults[0].isEmpty()) {
            System.debug('Possible duplicate contacts found for: ' + con.LastName);
        }
    }
}

Conclusion

Vous avez maintenant une compréhension de base de l’utilisation de SOQL et SOSL dans Salesforce. Vous savez comment écrire des requêtes pour interroger des données spécifiques avec SOQL et effectuer des recherches globales avec SOSL. Vous avez également appris à intégrer ces requêtes dans des classes et déclencheurs Apex pour automatiser et personnaliser vos applications Salesforce.

A lire aussi :  Création et gestion de déclencheurs (Triggers) dans Salesforce

Partagez cet article

Publications similaires