Erstellen von Beziehungsabfragen mit benutzerdefinierten Objekten
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Interpretieren von Diagrammen im Schemagenerator zur Bestimmung von Objektbeziehungen
- Bestimmen des Namens der benutzerdefinierten Beziehung, die in Abfragen benutzerdefinierter Objekte verwendet werden soll
- Erstellen einer Abfrage einer Unter-/Überordnungsbeziehung für benutzerdefinierte Objekte
- Erstellen einer Abfrage einer Über-/Unterordnungsbeziehung für benutzerdefinierte Objekte
Mit Trail Together einem Dozenten folgen
Möchten Sie bei diesem Schritt einem Experten folgen? Schauen Sie sich dieses Video an, das Teil der Reihe "Trail Together" auf Trailhead Live ist.
(Dieser Clip beginnt bei Minute 51:38, für den Fall, dass Sie zurückspringen und den Anfang des Schritts noch einmal sehen möchten.)
Starten Ihres Trailhead Playground und Installieren eines Pakets
Die Beispiele und praktischen Übungen im weiteren Verlauf dieses Moduls basieren auf einer Beispielanwendung für die Immobilienbranche namens DreamHouse. Lassen Sie uns die Anwendung in Ihrem Trailhead Playground installieren und Beispieldaten importieren.
Falls noch nicht erfolgt, starten Sie Ihren Trailhead Playground. Wenn Sie in Ihrer Organisation eine Registerkarte mit der Bezeichnung "Paket installieren" sehen, großartig! Fahren Sie dann gleich mit Schritt 1 fort. Falls nicht, suchen und öffnen Sie im App Launcher () Playground Starter und befolgen Sie die Anweisungen. Wenn Sie die Anwendung Playground Starter nicht sehen, kopieren Sie diesen Link zum Paket für DreamHouse und lesen Sie in der Trailhead-Hilfe den Artikel zum Installieren eines Pakets oder einer Anwendung zum Absolvieren einer Trailhead-Aufgabe.
- Klicken Sie auf die Registerkarte Paket installieren.
- Fügen Sie
04t3h000004mBpiAAE
in das Feld ein. - Klicken Sie auf Installieren.
- Wählen Sie Nur für Administratoren installieren aus und klicken Sie dann auf Installieren.
- Wenn Sie aufgefordert werden, Drittanbieterzugriff zu genehmigen, wählen Sie Ja, Zugriff auf diese Drittanbieter-Websites gewähren und klicken dann auf Weiter.
Nach Installation des Pakets sehen Sie eine Bestätigungsseite und erhalten eine E-Mail an die Adresse, die mit Ihrem Playground verknüpft ist.
Importieren der DreamHouse-Daten
- Klicken Sie auf , geben Sie
Dream
in das Feld "Search (Suchen)" ein und wählen Sie dann die Anwendung DreamHouse aus. - Klicken Sie auf die Registerkarte Settings (Einstellungen). (Wenn die Registerkarte "Settings" (Einstellungen) nicht angezeigt wird, erweitern Sie die Liste More [Mehr].)
- Klicken Sie auf Daten importieren.
- Klicken Sie auf die Registerkarte Properties (Immobilien) und machen Sie sich mit den Beispieldaten vertraut.
Erkunden des DreamHouse-Schemas
Bislang haben wir nur Standardobjekte abgefragt. Nun befassen wir uns mit dem Abfragen benutzerdefinierter Objekte. Da wir Objekte in der Anwendung DreamHouse verwenden, schauen wir uns als Erstes das DreamHouse-Schema (Datenmodell) an, um zu verstehen, wie die Daten strukturiert sind.
Öffnen des Schemagenerators
- Klicken Sie in Ihrem Trailhead Playground auf und wählen Sie Setup aus.
- Klicken Sie auf Objekt-Manager.
- Klicken Sie auf Schemagenerator.
- Klicken Sie auf der Registerkarte "Objekte" auf Alle löschen.
- Wenn Sie "Broker" und nicht "Broker__c" sehen, klicken Sie auf Anzeigeoptionen und wählen dann Elementnamen anzeigen aus.
-
Denken Sie daran, dass wir im Code die API-Feldnamen verwenden. In "Elementnamen anzeigen" werden API-Feldnamen anstelle von Feldbezeichnungen gezeigt. (Der API-Name eines benutzerdefinierten Objekts ist der Name des benutzerdefinierten Objekts mit angefügtem __c [Unterstrich Unterstrich c] am Ende.)
- Wählen Sie in der Liste "Auswählen aus" die Option Benutzerdefinierte Objekte aus.
- Wählen Sie Broker__c und Property__c aus. Diese benutzerdefinierten Objekte verwenden wir in dieser Einheit.
- Klicken Sie auf Automatisches Layout.
- Untersuchen Sie die Immobilienfelder.
-
Das benutzerdefinierte Objekt "Property__c" hat zwei benutzerdefinierte Felder: Picture__c und Broker__c. (Der API-Name eines benutzerdefinierten Felds ist der Name des benutzerdefinierten Felds mit angefügtem __c [Unterstrich Unterstrich c] am Ende.)
- Bewegen Sie den Mauszeiger über die Beziehungslinie, die Property__c mit Broker__c verbindet.
-
Es besteht eine Nachschlagebeziehung vom benutzerdefinierten Feld Broker__c im benutzerdefinierten Objekt Property__c zum benutzerdefinierten Objekt Broker__c.
- Klicken Sie im Element Property__c auf das Zahnradsymbol und wählen Sie dann Objekt anzeigen aus.
Der Objekt-Manager wird geöffnet und zeigt das Objekt Property__c an. - Klicken Sie auf Felder & Beziehungen.
- Klicken Sie auf die Feldbezeichnung Broker.
- Suchen Sie im Abschnitt "Nachschlageoptionen" den Namen der untergeordneten Beziehung.
Jetzt wissen wir, dass Property__c ein untergeordnetes Element von Broker__c ist und dass der Name der Beziehung zwischen einer Eigenschaft und einem Broker "Properties" ist. (Zur Erinnerung: Der Beziehungsname ist normalerweise die Pluralform des Namens des untergeordneten Objekts.)
Abfragen benutzerdefinierter Objekte
Das Abfragen eines benutzerdefinierten Objekts ist dem Abfragen eines Standardobjekts sehr ähnlich, allerdings gibt es ein paar Unterschiede.
Sehen wir uns diese Anforderung an:
"Eine Liste aller Immobilien mit Adresse, Bild und zugewiesenem Makler abrufen."
Das klingt einfach, oder? Wir fragen das benutzerdefinierte Objekt Property__c ab und erhalten die benutzerdefinierten Felder Address__c, Picture__c und Broker__c. Probieren wir es aus.
Erstellen einer Abfrage
- Geben Sie im Query Editor Folgendes ein:
SELECT Address__c, Picture__c, Broker__c FROM Property__c
- Klicken Sie auf Execute (Ausführen).
Die ersten sechs Zeilen Ihrer Ergebnisse sollten wie folgt lauten:Abfrageergebnis – Zeilen insgesamt: 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...
Sie werden feststellen, dass der Inhalt der Spalte Broker__c nicht sehr nützlich ist. Das liegt daran, dass das Feld Broker__c im Objekt Property__c ein Nachschlagefeld für das Objekt "Broker" (Makler) ist. Felder mit Nachschlagebeziehungen enthalten die Id des zugehörigen Objekts. Um den Namen des Brokers zu erhalten, benötigen wir eine Beziehungsabfrage.
Erstellen einer Abfrage einer Unter-/Überordnungsbeziehung
Da Broker__c das übergeordnete Objekt von Property__c ist, benötigen wir eine Abfrage der Unter-/Überordnungsbeziehung. Wir verwenden den Beziehungsnamen und die Punktnotation, um das Feld "Name" des Objekts Broker__c abzurufen.
- Ändern Sie im Query Editor Broker__c in Broker__c.Name, etwa so:
SELECT Address__c, Picture__c, Broker__c.Name FROM Property__c
- Klicken Sie auf Execute (Ausführen). (Ihnen wird eine Fehlermeldung angezeigt.)
Fehlermeldung
Beziehung 'Broker__c' im Feldpfad nicht verständlich. Wenn Sie versuchen, eine benutzerdefinierte Beziehung zu verwenden, müssen Sie an den Namen der benutzerdefinierten Beziehung '__r' anhängen.
Hoppla! Was ist passiert? Denken Sie daran, dass Broker__c ein benutzerdefiniertes Feld des Objekts "Property" ist. Was wir benötigen, ist das mit Broker__c verknüpfte Objekt.
Verwenden des Namens der benutzerdefinierten Beziehung in der Abfrage
Um das mit Broker__c verknüpfte Objekt (nicht das Feld Broker__c) anzugeben, ändern wir __c in __r (Unterstrich-Unterstrich-r). Broker__r ist der Name der benutzerdefinierten Beziehung. Er gibt an, dass wir die Beziehung von Property__c zum Objekt Broker__c durchlaufen möchten. Dieser Teil der Abfrage besagt: "Das Feld 'Name' aus dem zugehörigen benutzerdefinierten Objekt Broker__c abrufen". Lassen Sie uns unsere Abfrage aktualisieren.
- Ändern Sie im Query Editor
Broker__c
inBroker__r
, etwa so:SELECT Address__c, Picture__c, Broker__r.Name FROM Property__c
- Klicken Sie auf Execute (Ausführen).
Die ersten sechs Zeilen der Ergebnisse sollten wie folgt lauten:Abfrageergebnis – Zeilen insgesamt: 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
Viel besser. Anstelle der ID steht uns nun das Feld "Name" aus dem benutzerdefinierten Objekt "Broker" zur Verfügung.
Erstellen einer Abfrage einer Über-/Unterordnungsbeziehung
Wir haben erfolgreich jede Immobilie mit dem dazugehörigen Makler zurückgegeben. Was ist, wenn wir das Gegenteil wünschen?
Anforderung:
"Die Namen aller Makler mit Adresse und Preis aller den einzelnen Maklern zugewiesenen Immobilien abrufen."
Da wir eine Liste der Makler wünschen, fragen wir in unserer Hauptabfrage das Objekt Broker__c ab:
SELECT Name FROM Broker__c
"Broker" ist das übergeordnete Objekt, sodass die Abfrage der Über-/Unterordnungsbeziehung eine Unterabfrage des untergeordneten Objekts benötigt. Wir verwenden den Namen der untergeordneten Beziehung in der Unterabfrage.
Wie lautet der Beziehungsname für eine Unterabfrage des Objekts Property__c? Prüfen Sie die Details des Felds "Broker" im Objekt "Property".
Der Name der untergeordneten Beziehung ist "Properties". Da es sich um eine benutzerdefinierte Beziehung handelt, hängen wir, wenn wir sie in einer Abfrage verwenden, __r (Properties__r
) an. Unsere Unterabfrage (in Klammern) lautet also:
(SELECT Address__c, Price__c FROM Properties__r
)
Wenn wir die Unterabfrage in die Hauptabfrage einfügen, lautet unsere vollständige Abfrage wie folgt:
SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
Ausführen der Abfrage
- Geben Sie im Query Editor Folgendes ein:
SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
- Klicken Sie auf Execute (Ausführen).
Die ersten acht Zeilen der Ergebnisse sollten wie folgt lauten:
Perfekt! Jetzt haben wir eine Liste aller Makler und eine durch Komma getrennte Liste der Immobilien der einzelnen Makler. Wenn Sie Abfragen entwickeln, denken Sie daran, dass der Query Editor der Developer Console eine einfache Möglichkeit zum Testen und Optimieren Ihrer SOQL-Abfragen bietet.