Crear consultas de relación con objetos personalizados
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Interpretar diagramas en el Generador de esquemas para identificar relaciones de objetos.
- Identificar el nombre de relación personalizada para utilizar consultas de objetos personalizados.
- Crear una consulta Secundario a Principal para objetos personalizados.
- Crear una consulta Principal a Secundario para objetos personalizados.
Siga el proceso con Trail Together
¿Desea seguir el proceso con un experto a medida que realiza este paso? Eche un vistazo a este video, parte de la serie Trail Together en Trailhead Live.
(Este video comienza en el minuto 51:38, en caso de que desee rebobinar y mirar el comienzo del paso nuevamente).
Iniciar Trailhead Playground e instalar un paquete
Los ejemplos y las actividades prácticas en el resto de este módulo utilizan una aplicación de muestra de bienes inmuebles denominada DreamHouse. Instalemos la aplicación en su Trailhead Playground e importemos los datos de muestra.
Si aún no está abierto, inicie su Trailhead Playground. Si ve una ficha en su organización etiquetada como Instalar un paquete, ¡excelente! Salte el paso 1. En caso contrario, haga clic en el Iniciador de aplicación (), busque y abra Playground Starter y siga los pasos. Si no ve la aplicación Playground Starter, copie este vínculo en el paquete de DreamHouse y consulte Instalar un paquete o una aplicación para completar un reto de Trailhead en la Ayuda de Trailhead.
- Haga clic en la ficha Instalar un paquete.
- Pegue
04t3h000004mBpiAAE
en el campo. - Haga clic en Instalar.
- Seleccione Instalar solo para administradores y, a continuación, haga clic en Instalar.
- Si se solicita aprobar el acceso de terceros, seleccione Sí, conceder acceso… y haga clic en Continuar.
Cuando el paquete termine de instalarse, verá una página de confirmación y recibirá un email en la dirección asociada con su Playground.
Importar datos de DreamHouse
- Haga clic en , escriba
Dream
en el cuadro de búsqueda y seleccione la aplicación DreamHouse. - Haga clic en la ficha Configuración. (Si no ve la ficha Configuración, expanda la lista Más).
- Haga clic en Importar datos.
- Haga clic en la ficha Propiedades y familiarícese con los datos de muestra.
Explorar el esquema de DreamHouse
Hasta ahora, consultamos solo objetos estándar. Ahora hablaremos de cómo consultar objetos personalizados. Se utilizan objetos en la aplicación DreamHouse, así que en primer lugar, examinemos el esquema (modelo de datos) de DreamHouse para entender cómo se estructuran los datos.
Abrir el Generador de esquemas
- En su Trailhead Playground, haga clic en y seleccione Configuración.
- Haga clic en Gestor de objetos.
- Haga clic en Generador de esquemas.
- En la ficha Objetos, haga clic en Borrar todo.
- Si ve Broker en vez de Broker__c, haga clic en Ver opciones y seleccione Mostrar nombres de elementos.
-
Recuerde que en el código se utilizan nombres de API de campo. Mostrar nombres de elementos muestra nombres de API de campo en vez de etiquetas de campo. (El nombre de API para un objeto personalizado es el nombre de objeto personalizado con __c [guion bajo guion bajo c] agregado al final).
- En la lista Seleccionar desde, seleccione Objetos personalizados.
- Seleccione Broker__c y Property__c. Estos son los objetos personalizados que utilizamos en esta unidad.
- Haga clic en Formato automático.
- Examine los campos de propiedad.
-
El objeto personalizado Property__c tiene dos campos personalizados: Picture__c y Broker__c. (El nombre de API para un campo personalizado es el nombre de campo personalizado con __c [guion bajo guion bajo c] agregado al final).
- Pase el cursor sobre la línea de relación que conecta Property__c con Broker__c.
-
Hay una relación de búsqueda desde el campo personalizado Broker__c en el objeto personalizado Property__c hasta el objeto personalizado Broker__c.
- En el elemento Property__c, haga clic en el icono de engranaje y seleccione Ver objeto.
El Gestor de objetos se abre y muestra el objeto Property__c. - Haga clic en Campos y relaciones.
- Haga clic en la etiqueta de campo Agente inmobiliario.
- En la sección Opciones de búsqueda, busque el nombre de relación de secundarios.
Ahora sabemos que Property__c es un secundario de Broker__c y que el nombre de la relación entre una propiedad y un agente inmobiliario es Propiedades. (Recuerde que el nombre de relación generalmente es la forma plural del nombre de objeto secundario).
Consultar objetos personalizados
Consultar un objeto personalizado es muy similar a consultar un objeto estándar, pero hay algunas diferencias.
Tenga en cuenta este requisito:
“Consiga una lista de todas las propiedades con la dirección de propiedad, la imagen y el agente inmobiliario asignado”.
Bastante sencillo, ¿verdad? Se consulta el objeto personalizado de imagen Picture__c y se obtienen los campos personalizados de dirección, imagen y agente inmobiliario Address__c, Picture__c y Broker__c, respectivamente. Probémoslo.
Crear una consulta
- En el Editor de consultas, escriba:
SELECT Address__c, Picture__c, Broker__c FROM Property__c
- Haga clic en Ejecutar.
Las primeras seis filas de resultados deberían ser:Resultado de consulta: Total de filas: 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...
Observe que el contenido de la columna Broker__c no es muy útil. Esto se debe a que el campo Broker__c en el objeto Property__c es una búsqueda del objeto Agente inmobiliario. Los campos con relaciones de búsqueda contienen el Id. del objeto relacionado. Para obtener el nombre del agente inmobiliario, se necesita una consulta de relación.
Crear una consulta Secundario a Principal
Debido a que Broker__c es el principal de Property__c, se necesita una consulta Secundario a Principal. Utilizamos el nombre de relación y la notación de puntos para el campo Nombre del objeto Broker__c.
- En el Editor de consultas, cambie Broker__c a Broker__c.Name, de esta forma:
SELECT Address__c, Picture__c, Broker__c.Name FROM Property__c
- Haga clic en Ejecutar. (Recibió un mensaje de error).
Mensaje de error
No se entendió la relación “Broker__c” en la ruta de campo. Si intenta utilizar una relación personalizada, asegúrese de anexar “__r” después del nombre de relación personalizado.
¡Upsss! ¿Qué ocurrió? Recuerde que Broker__c es un campo personalizado en el objeto Propiedad. Lo que queremos es el objeto relacionado Broker__c.
Utilizar el nombre de relación personalizado en la consulta
Para especificar el objeto relacionado Broker__c (no el campo Broker__c), se cambia __c a __r (guion bajo-guion bajo-r). Broker__r es el nombre de relación personalizado. Indica que queremos atravesar la relación desde Property__c hasta el objeto Broker__c. Esta porción de la consulta dice: “Consiga el campo de nombre del objeto personalizado Broker__c relacionado”. Vamos a actualizar nuestra consulta.
- En el Editor de consultas, cambie
Broker__c
aBroker__r
, de esta forma:SELECT Address__c, Picture__c, Broker__r.Name FROM Property__c
- Haga clic en Ejecutar.
Las primeras seis filas de resultados deberían ser:Resultado de consulta: Total de filas: 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
Mucho mejor. En lugar del Id., ahora tenemos el campo de nombre del objeto personalizado Agente inmobiliario.
Crear una consulta Principal a Secundario
Logramos devolver cada propiedad con su agente inmobiliario relacionado correctamente. ¿Qué sucede si queremos lo opuesto?
Requisito:
“Consiga los nombres de todos los agentes inmobiliarios con la dirección y el precio de todas las propiedades asignadas a cada agente inmobiliario”.
Debido a que queremos una lista de todos los agentes inmobiliarios, en nuestra consulta principal, consultamos el objeto Broker__c:
SELECT Name FROM Broker__c
El agente inmobiliario es principal así que la consulta Principal a Secundario necesita una subconsulta del objeto secundario. Utilizamos el nombre de relación secundaria en la subconsulta.
¿Cuál es el nombre de relación para una subconsulta del objeto Property__c? Compruebe los detalles para el campo Agente inmobiliario en el objeto Propiedad.
El nombre de relación secundaria es Propiedades. Debido a que esta es una relación personalizada, cuando la utilizamos en una consulta, se anexa __r (Properties__r
). Así que nuestra subconsulta (en paréntesis) es:
(SELECT Address__c, Price__c FROM Properties__r
)
Cuando ingresamos la subconsulta en la consulta principal, nuestra consulta es:
SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
Ejecutar la consulta
- En el Editor de consultas, escriba:
SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
- Haga clic en Ejecutar.
Las primeras ocho filas de los resultados deberían tener un aspecto similar al siguiente:
¡Perfecto! Ahora tenemos una lista de todos los agentes inmobiliarios y una lista separada por comas de las propiedades de cada agente inmobiliario. Cuando desarrolle consultas, tenga en cuenta que el Editor de consultas de Developer Console brinda una forma sencilla de probar y ajustar sus consultas SOQL.