Skip to main content
Únase a nosotros en TDX, en San Francisco, o en Salesforce+ los días 5 y 6 de marzo en la conferencia para desarrolladores sobre la era de agentes de IA. Registrarse ahora.

Crear consultas de relaciones con objetos personalizados

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Interpretar los diagramas en el Schema Builder (Generador de esquemas) para identificar las relaciones entre objetos.
  • Identificar los nombres de relaciones personalizadas que se deben utilizar en las consultas de objetos personalizados.
  • Crear una consulta de secundario a principal para objetos personalizados.
  • Crear una consulta de principal a secundario para objetos personalizados.
Nota

Nota

¿Su idioma de aprendizaje es español? Comience el reto en un Trailhead Playground en español y utilice las traducciones proporcionadas entre paréntesis para navegar. Copie y pegue solo los valores en inglés, ya que las validaciones del reto se basan en los datos en inglés. Si no aprueba el reto en su organización en español, le recomendamos que (1) cambie la configuración regional a Estados Unidos, (2) cambie el idioma a inglés, siga las instrucciones descritas aquí y, a continuación, (3) vuelva a hacer clic en el botón Check Challenge (Comprobar el reto).

Consulte la insignia Trailhead en su idioma para obtener más información sobre cómo aprovechar la experiencia de Trailhead en otros idiomas.

Siga el proceso con Trail Together

¿Desea seguir el proceso con un experto a medida que realiza este paso? Eche un vistazo a este vídeo, parte de la serie Trail Together en Trailhead Live.

(Este clip comienza en la marca del minuto 51:38, en caso de que desee retroceder y volver a ver el principio del paso).

Inicie su Trailhead Playground e instale un paquete.

Los ejemplos y actividades prácticas en el resto de este módulo utilizan una aplicación inmobiliaria de ejemplo llamada DreamHouse. Instalemos la aplicación en su Trailhead Playground e importemos los datos de ejemplo.

Si aún no está abierto, inicie su Trailhead Playground. Si ve una ficha en su organización etiquetada como Install a Package (Instalar un paquete), excelente. Pase directamente al paso 1. De lo contrario, en el Iniciador de aplicación (Iniciador de aplicación), busque y abra Playground Starter y siga los pasos. Si no ve la aplicación Playground Starter, copie este enlace al paquete DreamHouse y consulte Instalar un paquete o una aplicación para completar un reto de Trailhead en la Ayuda de Trailhead.

  1. Haga clic en la ficha Install a Package (Instalar un paquete).
  2. Pegue 04t3h000004mBpiAAE en el campo.
  3. Haga clic en Install (Instalar).
  4. Seleccione Install for Admins Only (Instalar solo para administradores) y, a continuación, haga clic en Install (Instalar).
  5. Si se le solicita aprobar el acceso externo, seleccione Yes, grant access… (Sí, otorgar acceso a estos sitios web externos) y luego haga clic en Continue (Continuar).

Una vez instalado el paquete, verá una página de confirmación y recibirá un correo electrónico en la dirección asociada al Playground.

Importar datos de Dreamhouse

  1. Haga clic en Iniciador de aplicación, escriba Dream (Sueño) en el cuadro de búsqueda y luego seleccione la aplicación DreamHouse (Casa de ensueño).
  2. Haga clic en la ficha Settings (Configuración). Si no ve la ficha Settings, expanda la lista de More (Más).
  3. Haga clic en Import Data (Importar datos).
  4. Haga clic en la ficha Properties (Propiedades) y revise los datos de ejemplo.

Explore el esquema de DreamHouse

Hasta ahora, solo hemos consultado objetos estándar. Ahora, veamos cómo consultar objetos personalizados. Usamos objetos en la aplicación DreamHouse, así que primero vamos a examinar el esquema (modelo de datos) de DreamHouse para entender cómo está estructurada la información.

Abrir Schema Builder (Generador de esquemas)

  1. En su Trailhead Playground, haga clic en Configuración y seleccione Setup (Configuración).
  2. Haga clic en Object Manager (Gestor de objetos).
  3. Haga clic en Schema Builder (Generador de esquemas).
  4. En la ficha Objetos, haga clic en Clear All (Borrar todo).
  5. Si aparece Broker (Agente) en lugar de Broker__c (Agente__c), haga clic en View Options (Opciones de visualización) y luego seleccione Display Element Names (Mostrar nombres de elementos).
  6. Recuerde que en el código usamos los nombres de los campos en su formato de API. Mostrar nombres de elementos revela los nombres de los campos en su formato de API en lugar de las etiquetas de campo. (El nombre de API para un objeto personalizado es el nombre de ese objeto personalizado con __c [doble guion bajo c] añadido al final).

  7. En Select from list (Seleccionar desde lista), elija Custom Objects (Objetos personalizados).
  8. Seleccione Broker__c (Agente__c) y Property__c (Propiedad__c). Estos son los objetos personalizados que utilizamos en esta unidad.
  9. Haga clic en Auto-Layout (Formato automático).
  10. Examine los campos de la propiedad.
  11. El objeto personalizado Property__c (Propiedad__c) tiene dos campos personalizados: Picture__c (Imagen__c) y Broker__c (Agente__c). (El nombre de API para un campo personalizado es el nombre del campo personalizado con __c [doble guion bajo c] añadido al final).

    Schema Builder (Generador de esquemas) mostrando los objetos personalizados Broker__c (Agente__c) y Property__c (Propiedad__c). En el objeto personalizado Property__c (Propiedad__c), los campos personalizados Broker__c (Agente__c) y Picture__c (Imagen__c) están resaltados.

  12. Pase el cursor sobre la línea de relación que conecta Property__c (Propiedad__c) y Broker__c (Agente__c).
  13. Existe una relación de búsqueda desde el campo personalizado Broker__c (Agente__c) en el objeto personalizado Property__c (Propiedad__c) hacia el objeto personalizado Broker__c (Agente__c).

    Los objetos personalizados Broker__c (Agente__c) y Property__c (Propiedad__c) en Schema Builder (Generador de esquemas). El campo personalizado Broker__c (Agente__c) en el objeto Property__c (Propiedad__c) tiene una relación de búsqueda desde el objeto personalizado Property__c (Propiedad__c) hacia el objeto personalizado Broker__c (Agente__c).

  14. En el elemento Property__c (Propiedad__c), haga clic en el icono de engranaje y luego seleccione View Object (Ver objeto).
    Se abrirá Object Manager (Gestor de objetos) mostrando el objeto Property__c (Propiedad__c).
  15. Haga clic en Fields & Relationships (Campos y relaciones).
  16. Haga clic en la etiqueta del campo Broker (Agente).
  17. En la sección Lookup Options (Opciones de búsqueda), localice Child Relationship Name (Nombre de la relación secundaria).

Ahora sabemos que Property__c (Propiedad__c) es el objeto secundario de Broker__c (Agente__c) y que el nombre de la relación entre una propiedad y un agente es Properties (Propiedades). (Recuerde que el nombre de la relación suele ser la forma plural del nombre del objeto secundario).

Consultar objetos personalizados

Consultar un objeto personalizado es muy parecido a hacerlo con un objeto estándar, pero hay ciertas diferencias.

Considerar este requisito:

"Obtener una lista de todas las propiedades con la dirección de la propiedad, la imagen y el agente asignado".

Bastante sencillo, ¿verdad? Consultamos el objeto personalizado Property__ c (Propiedad__c) y obtenemos los campos personalizados Address__c (Dirección__c), Picture__c (Imagen__c) y Broker__c (Agente__c). Probémoslo.

Crear una consulta

  1. En el editor de consultas, escriba:
    SELECT Address__c, Picture__c, Broker__c FROM Property__c
  2. Haga clic en Execute (Ejecutar).
    Las primeras seis filas de sus resultados deberían ser:
    Resultados de la consulta - Filas totales: 12
    Address__c (Dirección__c)
    Picture__c (Imagen__c)
    Broker__c (Agente__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 (Agente__c) no es muy práctico. Eso es porque el campo Broker__c (Agente__c) en el objeto Property__c (Propiedad__c) es una búsqueda al objeto Broker (Agente). Los campos con relaciones de búsqueda contienen el Id. del objeto relacionado. Para obtener el nombre del Broker (Agente), necesitamos hacer una consulta de relación.

Crear una consulta de secundario a principal

Debido a que Broker__c (Agente__c) es el objeto principal de Property__ c (Propiedad__c), necesitamos hacer una consulta de secundario a principal. Usamos el nombre de la relación y la notación con punto para obtener el campo Name (Nombre) del objeto Broker__c (Agente__c).

  1. En el editor de consultas, cambie Broker__c (Agente__c) por Broker__c.Name (Agente__c.Nombre), de la siguiente manera:
    SELECT Address__c, Picture__c, Broker__c.Name FROM Property__c
  2. Haga clic en Execute (Ejecutar). (Obtiene un mensaje de error).
    Error Message (Mensaje de error)
    No se ha entendido la relación "Broker__c" (Agente__c) en la ruta del campo. Si está intentando usar una relación personalizada, asegúrese de agregar "__r" después del nombre de la relación personalizada.

¡Vaya! ¿Qué ha ocurrido? Recuerde que Broker__c (Agente__c) es un campo personalizado en el objeto Property (Propiedad). Lo que queremos es el objeto relacionado Broker__c (Agente__c).

Use los nombres de relaciones personalizadas en la consulta

Para especificar el objeto relacionado Broker__c (Agente__c) (y no el campo Broker__c [Agente__c]), cambiamos "__c" por "__r" (doble guion bajo r). Broker__r (Agente__r) es el nombre de la relación personalizada. Indica que deseamos recorrer la relación desde Property__c (Propiedad__c) hacia el objeto Broker__c (Agente__c). Esta parte de la consulta dice: "Obtenga el campo Name (Nombre) del objeto personalizado Broker__c (Agente__c) relacionado". Actualicemos nuestra consulta.

  1. En el editor de consultas, cambie Broker__c (Agente__c) a Broker__r (Agente__c), de la siguiente manera:
    SELECT Address__c, Picture__c, Broker__r.Name FROM Property__c
  2. Haga clic en Execute (Ejecutar).

    Las primeras seis filas de los resultados deberían ser:
    Resultados de la consulta - Filas totales: 12
    Address__c (Dirección__c)
    Picture__c (Imagen__c)
    Broker__r.Name (Agente_r.Nombre)
    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

Mejor todavía. En lugar del Id., ahora tenemos el campo Name (Nombre) del objeto personalizado Broker (Agente).

Crear una consulta de principal a secundario

Hemos devuelto cada propiedad con su agente relacionado. ¿Qué pasa si queremos justo lo contrario?

Requisito:

"Obtener los nombres de todos los agentes con la dirección y el precio de todas las propiedades asignadas a cada uno".

Debido a que queremos una lista de agentes, en nuestra consulta principal, veremos el objeto Broker__c (Agente__c):

SELECT Name FROM Broker__c

El agente es el objeto principal, por lo que la consulta de principal a secundario necesita una subconsulta del objeto secundario. Usamos el nombre de la relación secundaria en la subconsulta.

¿Cuál es el nombre de la relación para una subconsulta del objeto Property__c (Propiedad__c)? Verifique los detalles del campo Broker (Agente) en el objeto Property (Propiedad).

En la página de detalles del campo Broker (Agente) del objeto Property (Propiedad), bajo Lookup Options (Opciones de búsqueda), el nombre de la relación secundaria es Properties (Propiedades).

El nombre de la relación secundaria es Properties (Propiedades). Debido a que esta es una relación personalizada, cuando la usamos en una consulta, agregamos __r (Properties__r [Propiedades__r]). Entonces, nuestra subconsulta (entre paréntesis) es:

(SELECT Address__c, Price__c FROM Properties__r [SELECCIONAR Dirección__c, Precio__c DE Propiedades__r])

Cuando insertamos la subconsulta en la consulta principal, así es como se ve:

SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c (SELECCIONAR Nombre, [SELECCIONAR Dirección__c, Precio__c DE Propiedades__r] DE Agente__c)

Ejecutar la consulta

  1. En el editor de consultas, escriba:
    SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
  2. Haga clic en Execute (Ejecutar).
    Las primeras ocho filas de sus resultados deberían verse así:

    Resultados de consulta: Filas totales: 8. La primera columna muestra los nombres de los agentes. La segunda columna contiene una lista de direcciones y precios de propiedades separada por comas.

¡Perfecto! Ahora tenemos una lista de todos los agentes y una lista separada por comas de las propiedades de cada agente. Cuando esté desarrollando consultas, recuerde que el editor de consultas de Developer Console proporciona una forma fácil de probar y ajustar sus consultas SOQL.

Recursos

Reto práctico

+500 puntos

Prepararse

Completará esta/este unidad en su propia organización de prácticas. Haga clic en Iniciar para empezar a trabajar o haga clic en el nombre de su organización para seleccionar otro diferente.

Su reto

Create a Relationship Query

Use SOQL to identify properties listed with DreamHouse Realty in the last 30 days.

If you didn’t already install the DreamHouse package and import sample data, follow the instructions at the beginning of this unit to do that now.

  • Create a class
    • Name: PropertyUtility
  • Create a method
    • Name: newListedProperties
    • Keywords: public, static, and void
  • Create a list
    • Name: newPropList
  • Create a query and assign the query results to the list
    • Get this information:
      • The name of the property
      • The broker’s email address
      • How long the property has been on market
      (Hint: Use API names, not field names or field labels)
    • Object: Property
    • Condition: The property was listed within the last 30 days
  • Create a for loop that iterates through the query results
    • Object: Property
    • List name: newPropList
    • For each item, concatenate the property name, followed by a colon, followed by the broker’s email address: <Property Name> : <Broker Email>
    • Store the concatenated string in a variable named propEmail
    • Print the propEmail variable to the debug log
Comparta sus comentarios sobre Trailhead en la Ayuda de Salesforce.

Nos encantaría conocer su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios cuando quiera desde el sitio de la Ayuda de Salesforce.

Más información Continuar para compartir comentarios