Criar consultas de relacionamento com objetos personalizados
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Interpretar diagramas no Criador de esquemas para identificar relacionamentos entre objetos.
- Identificar o nome de relacionamento personalizado a ser usado em consultas de objetos personalizados.
- Criar uma consulta filho para pai para objetos personalizados.
- Criar uma consulta pai para filho para objetos personalizados.
Acompanhar com o Trail Together
Deseja acompanhar um especialista enquanto trabalha nesta etapa? Veja este vídeo que faz parte da série Trail Together no Trailhead Live.
(Este clipe começa na marca dos 51:38 minutos, caso você queira retroceder e ver o início da etapa novamente.)
Iniciar o seu Trailhead Playground e instalar um pacote
Os exemplos e as atividades práticas no restante deste módulo usam um aplicativo imobiliário de exemplo chamado DreamHouse. Vamos instalar o aplicativo em seu Trailhead Playground e importar os dados de amostra.
Se ainda não estiver aberto, inicie seu Trailhead Playground. Se você vir uma guia na sua organização com o rótulo Instalar um pacote, ótimo! Avance para a etapa 1. Do contrário, no Iniciador de aplicativos (), encontre e abra o Playground Starter e siga as etapas. Se não vir o aplicativo Playground Starter, copie este link para o pacote do DreamHouse e consulte Instalar um pacote ou aplicativo para concluir um desafio do Trailhead na Ajuda do Trailhead.
- Clique na guia Instalar um pacote.
- Cole
04t3h000004mBpiAAE
no campo. - Clique em Instalar.
- Selecione Instalar apenas para administradores e clique em Instalar.
- Se for pedida a aprovação do acesso de terceiros, selecione Sim, conceder acesso... e clique em Continuar.
Quando a instalação do pacote for concluída, você verá uma página de confirmação e receberá um email no endereço associado ao Playground.
Importar dados do DreamHouse
- Clique em , digite
Dream
na caixa de pesquisa e selecione o aplicativo DreamHouse. - Clique na guia Configurações. (Se você não vir a guia Configurações, expanda a lista Mais.)
- Clique em Importar dados.
- Clique na guia Propriedades e familiarize-se com os dados da amostra.
Explorar o esquema DreamHouse
Até agora, só consultamos objetos padrão. Agora vamos discutir como consultar objetos personalizados. Usamos objetos no aplicativo DreamHouse, então examinemos primeiro o esquema DreamHouse (modelo de dados) para entender como os dados estão estruturados.
Abrir o Criador de esquemas
- Em seu Trailhead Playground, clique em e selecione Setup (Configuração).
- Clique em Gerenciador de objetos.
- Clique em Criador de esquemas.
- Na guia Objetos, clique em Limpar tudo.
- Se você vir Broker em vez de Broker__c, clique em Exibir opções e selecione Exibir nomes de elementos.
-
Lembre-se que no código usamos nomes de API de campo. Exibir nomes de elementos nos mostra nomes de API de campo em vez de rótulos de campo. (O nome de API para um objeto personalizado é o nome do objeto personalizado com __c [sublinhado sublinhado c] adicionado no final.)
- Na lista Selecionar de, escolha Objetos personalizados.
- Selecione Broker__c e Property__c. Eles são os objetos personalizados que usamos nesta unidade.
- Clique em Layout automático.
- Examine os campos de propriedade.
-
O objeto personalizado Property__c tem dois campos personalizados: Picture__c e Broker__c. (O nome de API para um campo personalizado é o nome do campo personalizado com __c [sublinhado sublinhado c] adicionado no final.)
- Passe o mouse sobre a linha de relacionamento que liga Property__c a Broker__c.
-
Há um relacionamento de pesquisa do campo personalizado Broker__c no objeto personalizado Property__c ao objeto personalizado Broker__c.
- No elemento Property__c, clique no ícone de engrenagem e selecione Exibir objeto.
O Gerenciador de objetos abre e exibe o objeto Property__c. - Clique em Campos e relacionamentos.
- Clique no rótulo de campo Broker.
- Na seção Opções de pesquisa, encontre o Nome do relacionamento filho.
Agora sabemos que Property__c é filho de Broker__c e que o nome do relacionamento entre um imóvel e um corretor é Properties. (Lembre-se, o nome do relacionamento é tipicamente a forma plural do nome do objeto filho.)
Consultar objetos personalizados
A consulta de um objeto personalizado é muito parecida com a consulta de um objeto padrão, mas existem algumas diferenças.
Considere este requisito:
"Obter uma lista de todos os imóveis com o endereço da propriedade, a imagem e corretor designado."
Bem simples, certo? Consultamos o objeto personalizado Property__c e obtemos os campos personalizados Address__c, Picture__c e Broker__c. Vamos testar isso.
Criar uma consulta
- No Editor de consultas, digite o seguinte:
SELECT Address__c, Picture__c, Broker__c FROM Property__c
- Clique em Executar.
As primeiras seis linhas de seus resultados devem ser:Resultados da consulta - Total de linhas: 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 o conteúdo da coluna Broker__c não é muito útil. Isso acontece porque o campo Broker__c no objeto Property__c é uma pesquisa do objeto Broker. Campos com relacionamentos de pesquisa contêm o ID do objeto relacionado. Para obter o nome do corretor, precisaremos de uma consulta de relacionamento.
Criar uma consulta filho para pai
Como Broker__c é pai de Property__c, precisamos de uma consulta filho para pai. Usamos o nome do relacionamento e a notação de ponto para obter o campo Nome do objeto Broker__c.
- No Editor de consulta, mude Broker__c para Broker__c.Name, assim:
SELECT Address__c, Picture__c, Broker__c.Name FROM Property__c
- Clique em Executar. (Você receberá uma mensagem de erro.)
Mensagem de erro
Não entendi o relacionamento "Broker__c" no caminho do campo. Se você está tentando usar um relacionamento personalizado, anexe o "__r" após o nome de relacionamento personalizado.
Oooops! O que aconteceu? Lembre-se que Broker__c é um campo personalizado no objeto Property. O que queremos é o objeto relacionado Broker__c.
Usar o nome de relacionamento personalizado na consulta
Para especificar o objeto relacionado Broker__c (não o campo Broker__c), mudamos __c para __r (sublinhado sublinhado r). Broker__r é o nome de relacionamento personalizado. Indica que queremos percorrer o relacionamento de Property__c para o objeto Broker__c. Essa parte da consulta diz: "Obter o campo Nome do objeto personalizado Broker__c relacionado." Vamos atualizar nossa consulta.
- No Editor de consulta, mude
Broker__c
paraBroker__r
, assim:SELECT Address__c, Picture__c, Broker__r.Name FROM Property__c
- Clique em Executar.
As seis primeiras linhas de resultados devem ser:Resultados da consulta - Total de linhas: 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
Muito melhor. Em vez do ID, agora temos o campo Nome do objeto personalizado Broker.
Criar uma consulta pai para filho
Retornamos com sucesso cada imóvel com seu corretor relacionado. E se quisermos o oposto?
Requisito:
"Obter os nomes de todos os corretores com o endereço e o preço de todas as propriedades atribuídas a cada corretor."
Como queremos uma lista de corretores, consultamos o objeto Broker__c na nossa consulta principal:
SELECT Name FROM Broker__c
Broker é o pai, ou seja, a consulta pai para filho precisa de uma subconsulta do objeto filho. Usamos o nome do relacionamento filho na subconsulta.
Qual é o nome de relacionamento para uma subconsulta do objeto Property__c? Verifique os detalhes do campo Broker no objeto Property.
O Nome do relacionamento filho é Properties. Por se tratar de um relacionamento personalizado, quando o usamos em uma consulta, anexamos __r (Properties__r
). Assim, nossa subconsulta (entre parênteses) é:
(SELECT Address__c, Price__c FROM Properties__r
)
Quando inserimos a subconsulta na consulta principal, a consulta completa é:
SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
Executar a consulta
- No Editor de consultas, digite o seguinte:
SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
- Clique em Executar.
As primeiras oito linhas de seus resultados devem ser assim:
Perfeito! Agora temos uma lista de todos os corretores e uma lista separada por vírgulas dos imóveis de cada corretor. Quando estiver desenvolvendo consultas, lembre-se que o Editor de consulta do Developer Console oferece uma maneira fácil de testar e ajustar suas consultas SOQL.