Skip to main content

Création de requêtes de relation avec des objets personnalisés

Objectifs de formation

Une fois cette unité terminée, vous pourrez :

  • Interpréter les diagrammes dans le générateur de schéma pour identifier les relations entre les objets
  • Identifier le nom de la relation personnalisée à utiliser dans les requêtes d’objets personnalisés
  • Créer une requête enfant-parent pour des objets personnalisés
  • Créer une requête parent-enfant pour des objets personnalisés
Remarque

Remarque

Vous souhaitez apprendre en français ? Commencez le défi dans un Trailhead Playground en français et utilisez les traductions fournies entre crochets pour naviguer. Copiez et collez uniquement les valeurs en anglais, car les validations de défi reposent sur les données en anglais. Si vous ne réussissez pas le défi dans votre organisation en français, nous vous recommandons (1) de définir le paramètre régional sur les États-Unis, (2) de définir la langue sur l’anglais en suivant les instructions ici, puis (3) de cliquer à nouveau sur le bouton « Vérifier le défi ».

Consultez le badge Trailhead dans votre langue pour découvrir comment profiter de l’expérience Trailhead traduite.

Vidéo de démonstration Trail Together

Vous souhaitez être guidé pas à pas par un expert pendant que vous travaillez sur cette étape ? Regardez cette vidéo qui fait partie de la série Trail Together sur Trailhead Live.

(Ce clip commence à 51 min 38 s, au cas où vous voudriez revenir en arrière et regarder à nouveau le début de l’étape.)

Lancement de votre Trailhead Playground et installation d’un package

Les exemples et les activités pratiques du reste de ce module utilisent un exemple d’application immobilière appelée DreamHouse. Installons l’application dans votre Trailhead Playground et importons des exemples de données.

Lancez votre Trailhead Playground (s’il n’est pas déjà ouvert). Si vous voyez un onglet intitulé Installer un package dans votre organisation, c’est parfait ! Passez à l’étape 1. Sinon, depuis le lanceur d’application (Lanceur d’application), cherchez et ouvrez Playground Starter et laissez-vous guider. Si vous ne voyez pas l’application Playground Starter, copiez ce lien dans le package DreamHouse et consultez Installation d’un package ou d’une application pour relever un défi Trailhead dans l’aide Trailhead.

  1. Cliquez sur l’onglet Installer un package.
  2. Copiez 04t3h000004mBpiAAE dans le champ.
  3. Cliquez sur Installer.
  4. Sélectionnez Installer pour les administrateurs seulement, puis cliquez sur Installer.
  5. Si vous êtes invité à approuver l’accès de tiers, sélectionnez Oui, accorder l’accès…, puis cliquez sur Continuer.

Une fois l’installation du package terminée, une page de confirmation s’affiche et vous recevez un e-mail à l’adresse associée à votre Trailhead Playground.

Importation de données DreamHouse

  1. Cliquez sur Lanceur d’application, saisissez Dream dans la zone de recherche, puis sélectionnez l’application DreamHouse.
  2. Cliquez sur l’onglet Paramètres. (Si l’onglet Paramètres n’apparaît pas, développez la liste Plus.)
  3. Cliquez sur Importer des données.
  4. Cliquez sur l’onglet Propriétés et familiarisez-vous avec les exemples de données.

Exploration du schéma DreamHouse

Jusqu’à présent, nous n’avons interrogé que des objets standard. Nous vous expliquons maintenant comment interroger des objets personnalisés. Comme nous utilisons des objets dans l’application DreamHouse, examinons d’abord le schéma DreamHouse (son modèle de données) pour comprendre comment les données sont structurées.

Ouverture du générateur de schéma

  1. Dans votre Trailhead Playground, cliquez sur Configuration, puis sélectionnez Setup (Configuration).
  2. Cliquez sur Gestionnaire d’objet.
  3. Cliquez sur Générateur de schéma.
  4. Dans l’onglet Objets, cliquez sur Effacer tout.
  5. Si vous voyez Broker (Courtier) au lieu de Broker__c, cliquez sur Options d’affichage, puis sélectionnez Afficher les noms d’élément.
  6. N’oubliez pas que dans le code, nous utilisons les noms d’API des champs. L’option Afficher les noms d’élément nous montre les noms d’API des champs au lieu des étiquettes de champ. (Le nom d’API d’un objet personnalisé est le nom de l’objet personnalisé suivi de __c [2 traits de soulignement et c].)

  7. Dans la liste Sélectionner dans, choisissez Objets personnalisés.
  8. Sélectionnez Broker__c et Property__c. Ce sont les objets personnalisés que nous utilisons dans cette unité.
  9. Cliquez sur Présentation automatique.
  10. Examinez les champs de propriété.
  11. L’objet personnalisé Property__c, comporte deux champs personnalisés : Picture__c et Broker__c. (Le nom d’API d’un champ personnalisé est le nom du champ personnalisé suivi de __c [2 traits de soulignement et c].)

    Le générateur de schéma affichant les objets personnalisés Broker__c et Property__c. Sur l’objet personnalisé Property__c, les champs personnalisés Broker__c et Picture__c sont mis en évidence.

  12. Survolez la ligne de relation qui relie Property__c à Broker__c.
  13. Il existe une relation de référence entre le champ personnalisé Broker__c de l’objet personnalisé Property__c et l’objet personnalisé Broker__c.

    Les objets personnalisés Broker__c et Property__c dans le générateur de schéma. Le champ personnalisé Broker__c sur l’objet Property__c a une relation de référence entre l’objet personnalisé Property__c et l’objet personnalisé Broker__c.

  14. Sur l’élément Property__c, cliquez sur l’icône d’engrenage, puis sélectionnez Afficher un objet.
    Le gestionnaire d’objet s’ouvre et affiche l’objet Property__c.
  15. Cliquez sur Champs et relations.
  16. Cliquez sur l’étiquette de champ Broker.
  17. Dans la section Options de référence, recherchez le nom de la relation enfant.

Nous savons maintenant que Property__c est un enfant de Broker__c et que le nom de la relation entre une propriété et un courtier est Properties (Propriétés). (N’oubliez pas que le nom de la relation est généralement le nom de l’objet enfant au pluriel.)

Objets personnalisés de requête

L’interrogation d’un objet personnalisé ressemble beaucoup à l’interrogation d’un objet standard, mais il existe quelques différences.

Prenons cette exigence :

« Obtenir la liste de toutes les propriétés avec l’adresse de la propriété, la photo et le courtier attribué. »

Assez simple, n’est-ce pas ? Nous interrogeons l’objet personnalisé Property__c et obtenons les champs personnalisés Address__c, Picture__c et Broker__c. Essayons donc.

Création d’une requête

  1. Dans l’éditeur de requête, saisissez :
    SELECT Address__c, Picture__c, Broker__c FROM Property__c
  2. Cliquez sur Exécuter.
    Les six premières lignes de vos résultats doivent être les suivantes :
    Résultats de requête – Total des lignes : 12
    Address__c
    Picture__c
    Broker__c
    18 Henry St
    https://s3-us-west-2.amazonaws.com…
    a016g000007Yxfn...
    24 Pearl St
    https://s3-us-west-2.amazonaws.com…
    a016g000007Yxfn...
    72 Francis St
    https://s3-us-west-2.amazonaws.com…
    a016g000007Yxfn...
    32 Prince St
    https://s3-us-west-2.amazonaws.com…
    a016g000007Yxfn...
    110 Baxter St
    https://s3-us-west-2.amazonaws.com…
    a016g000007Yxfn...
    448 Hannover St
    https://s3-us-west-2.amazonaws.com…
    a016g000007Yxfn...

Vous remarquerez que le contenu de la colonne Broker__c n’est pas très utile. En effet, le champ Broker__c figurant dans l’objet Property__c est une référence à l’objet Broker. Les champs comportant des relations de référence contiennent l’ID de l’objet associé. Pour obtenir le nom du courtier, nous avons besoin d’une requête de relation.

Création d’une requête enfant-parent

Étant donné que Broker__c est le parent de Property__c, nous avons besoin d’une requête enfant-parent. Nous utilisons le nom de la relation et la notation par point pour obtenir le champ Nom de l’objet Broker__c.

  1. Dans l’éditeur de requête, remplacez Broker__c par Broker__c.Name, comme suit :
    SELECT Address__c, Picture__c, Broker__c.Name FROM Property__c
  2. Cliquez sur Execute (Exécuter). (Vous obtenez un message d’erreur.)
    Message d’erreur
    La relation « Broker__c » dans le chemin du champ n’a pas été comprise. Si vous essayez d’utiliser une relation personnalisée, veillez à bien ajouter « __r » après le nom de la relation personnalisée.

Oups ! Que s'est-il passé ? Rappelez-vous que Broker__c est un champ personnalisé sur l’objet Property (Propriété). Pour notre part, nous voulons l’objet associé Broker__c.

Utilisation du nom de relation personnalisé dans la requête

Pour spécifier l’objet associé Broker__c (et non le champ Broker__c), nous remplaçons __c par __r (2 traits de soulignement et r). Broker__r (Courtier__r) est le nom de la relation personnalisée. Il indique que nous voulons traverser la relation entre Property__c et l’objet Broker__c. Cette partie de la requête indique : « Obtenir le champ Nom de l’objet personnalisé Broker__c associé ». Mettons à jour notre requête.

  1. Dans l’éditeur de requête, remplacez Broker__c par Broker__r, comme suit :
    SELECT Address__c, Picture__c, Broker__r.Name FROM Property__c
  2. Cliquez sur Exécuter.

    Les six premières lignes de résultats doivent être les suivantes :
    Résultats de requête – Total des lignes : 12
    Address__c
    Picture__c
    Broker__r.Name
    18 Henry St
    https://s3-us-west-2.amazonaws.com…
    Caroline Kingsley
    24 Pearl St
    https://s3-us-west-2.amazonaws.com…
    Michael Jones
    72 Francis St
    https://s3-us-west-2.amazonaws.com…
    Jonathan Bradley
    32 Prince St
    https://s3-us-west-2.amazonaws.com…
    Jennifer Wu
    110 Baxter St
    https://s3-us-west-2.amazonaws.com…
    Olivia Green
    448 Hannover St
    https://s3-us-west-2.amazonaws.com…
    Miriam Aupont

Voilà qui est mieux. Au lieu de l’ID, nous avons maintenant le champ Nom de l’objet personnalisé Broker.

Création d’une requête parent-enfant

Nous avons réussi à renvoyer chaque propriété avec son courtier associé. Et si nous souhaitons obtenir l’inverse ?

Exigence :

« Obtenir le nom de tous les courtiers, ainsi que l’adresse et le prix de toutes les propriétés attribuées à chacun. »

Étant donné que nous voulons une liste des courtiers, dans notre requête principale, nous interrogeons l’objet Broker__c :

SELECT Name FROM Broker__c

Broker est le parent, donc la requête parent-enfant a besoin d’une sous-requête de l’objet enfant. Nous utilisons le nom de la relation enfant dans la sous-requête.

Quel est le nom de la relation pour une sous-requête de l’objet Property__c ? Vérifiez les détails du champ Broker sur l’objet Property.

Sur la page de détails du champ Broker de l’objet Property, sous Options de référence, le nom de la relation enfant est Properties.

Le nom de la relation enfant est Properties. Comme il s’agit d’une relation personnalisée, lorsque nous l’utilisons dans une requête, nous ajoutons __r (Properties __r). Donc, notre sous-requête (entre parenthèses) est :

(SELECT Address__c, Price__c FROM Properties__r)

Lorsque nous insérons la sous-requête dans la requête principale, notre requête complète est :

SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c

Exécution de la requête

  1. Dans l’éditeur de requête, saisissez :
    SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
  2. Cliquez sur Exécuter.
    Les huit premières lignes de vos résultats doivent être les suivantes :

    Résultats de requête : Total des lignes : 8. La première colonne répertorie le nom des courtiers. La deuxième colonne contient une liste d’adresses et de prix de propriétés séparés par des virgules.

Parfait ! Nous disposons maintenant de la liste de tous les courtiers et de la liste des propriétés de chaque courtier, séparées par des virgules. Lorsque vous élaborez des requêtes, n’oubliez pas que l’éditeur de requête de la Developer Console constitue un moyen simple de tester et d’ajuster vos requêtes SOQL.

Ressources

Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer à partager vos commentaires