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
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 (), 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.
- Cliquez sur l’onglet Installer un package.
- Copiez
04t3h000004mBpiAAE
dans le champ. - Cliquez sur Installer.
- Sélectionnez Installer pour les administrateurs seulement, puis cliquez sur Installer.
- 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
- Cliquez sur , saisissez
Dream
dans la zone de recherche, puis sélectionnez l’application DreamHouse. - Cliquez sur l’onglet Paramètres. (Si l’onglet Paramètres n’apparaît pas, développez la liste Plus.)
- Cliquez sur Importer des données.
- 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
- Dans votre Trailhead Playground, cliquez sur , puis sélectionnez Setup (Configuration).
- Cliquez sur Gestionnaire d’objet.
- Cliquez sur Générateur de schéma.
- Dans l’onglet Objets, cliquez sur Effacer tout.
- Si vous voyez Broker (Courtier) au lieu de Broker__c, cliquez sur Options d’affichage, puis sélectionnez Afficher les noms d’élément.
-
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].)
- Dans la liste Sélectionner dans, choisissez Objets personnalisés.
- Sélectionnez Broker__c et Property__c. Ce sont les objets personnalisés que nous utilisons dans cette unité.
- Cliquez sur Présentation automatique.
- Examinez les champs de propriété.
-
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].)
- Survolez la ligne de relation qui relie Property__c à Broker__c.
-
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.
- 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. - Cliquez sur Champs et relations.
- Cliquez sur l’étiquette de champ Broker.
- 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
- Dans l’éditeur de requête, saisissez :
SELECT Address__c, Picture__c, Broker__c FROM Property__c
- 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.
- 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
- 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.
- Dans l’éditeur de requête, remplacez
Broker__c
parBroker__r
, comme suit :SELECT Address__c, Picture__c, Broker__r.Name FROM Property__c
- 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.
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
- Dans l’éditeur de requête, saisissez :
SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
- Cliquez sur Exécuter.
Les huit premières lignes de vos résultats doivent être les suivantes :
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.