Skip to main content

Criar sua primeira consulta SOQL

Nota

Nota

Deseja aprender em português (Brasil)? Comece o desafio em um Trailhead Playground de português (Brasil) e use as traduções fornecidas entre parênteses para navegar. Copie e cole somente os valores em inglês porque as validações dos desafios dependem de dados em inglês. Se você não passar no desafio em sua organização de português (Brasil), recomendamos que (1) mude o local para os Estados Unidos, (2) mude o idioma para inglês, seguindo as instruções aqui, e (3) clique novamente no botão “Validar o desafio”.

Consulte o emblema Trailhead no seu idioma para saber mais sobre como aproveitar a experiência de Trailhead em outros idiomas.

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.

(Este clipe começa na marca dos 02:33 minutos, caso você queira retroceder e ver o início da etapa novamente.)

Introdução

Nesta etapa, você vai criar um componente do Lightning e um controlador do Apex simples. Em seguida, você vai atualizar o componente para exibir dados e converter SQL básico em SOQL. 

Criar um pacote de componentes do Lightning

Agora que você criou sua organização, instalou o pacote e importou os dados, é hora de criar um componente do Lightning que mostre dados simples de uma consulta SQL convertida.

  1. Abra o Developer Console.
  2. Feche as guias que estiverem abertas no Developer Console e clique em File (Arquivo) > New (Novo) > Lightning Component (Componente do Lightning).
  3. Dê ao componente do Lightning o nome de Books4EveryoneHome.
  4. Na seção de configuração do componente, selecione Lightning Page (Página do Lightning) e clique em Submit (Enviar).
  5. Substitua o conteúdo do componente por este código.
    <aura:component implements="flexipage:availableForAllPageTypes" access="global">
      <aura:attribute name="Books" type="Book__c" />
      <lightning:card title="Books4Everyone Books">
        <aura:set attribute="body">
          TODO: Update this to display data!
        </aura:set>
      </lightning:card>
    </aura:component>
    O componente, até agora, é muito simples. Ele tem um atributo para armazenar informações sobre livros e exibe os dados em um cartão do Lightning. Você voltará a esse pacote em breve, mas primeiro precisará programar algum Apex para preenchê-lo com dados.

Criar uma classe do Apex

Nossa próxima etapa é criar um controlador do Apex para obter os dados solicitados de Books4Everyone.

  1. No Developer Console, clique em  File (Arquivo) > New (Novo) > Apex Class (Classe do Apex).
  2. Dê à nova classe do Apex o nome de Books4EveryoneHomeController.
  3. Substitua o corpo da classe do Apex pelo código a seguir.
    public with sharing class Books4EveryoneHomeController {
      @AuraEnabled
      public static List<Book__c> getBooks() {
        return; //Your query here
      }
    }
  4. Vamos detalhar rapidamente o código que acabamos de criar. Nossa primeira linha é @AuraEnabled, que nos permite chamar essa função do nosso componente do Lightning. Em seguida, temos nossa definição de função. Ela especifica que vamos retornar uma lista de objetos Book__c. Isso é importante porque as consultas em SOQL sempre retornam listas de sObjects. Esse código ainda não vai ser salvo, já que você precisa primeiro criar a consulta SOQL. Books4Everyone quer exibir todos os títulos de livros e suas descrições. Esta é a consulta SQL que faz isso: 
    SELECT b.ID, b.Name, b.Description
      FROM Book b
    Você pode tentar colocar isso no nosso código, mas não vai funcionar. Vamos ver o que já sabemos até agora: Book (Livro) é um objeto personalizado no Salesforce que era parte de um pacote não gerenciado instalado, com o nome de API Book__c. Como ID e Name (Nome) são campos padrão, seus nomes de API são ID e Name (Nome), respectivamente. Mas Description (Descrição) é um campo personalizado, ou seja, seu nome de API é Description__c.
  5. Agora sabemos o suficiente para atualizar a classe do Apex com nossa nova consulta SOQL. Substitua return; //Your query herepor:
    return [SELECT Id,Name,Description__c
      FROM Book__c];
  6. Agora salve seu arquivo. Você criou sua primeira consulta SOQL!

SQL não é SOQL

Agora que convertemos nossa primeira consulta, veja uma tabela que fala de algumas dúvidas comuns sobre as diferenças entre SQL e SOQL

Maioria das variantes de SQL
SOQL
Compatível com instruções para DML, controle de transações e instruções SELECT
Compatível somente com instruções SELECT
Compatível com SELECT *
(inclui todas as colunas)
Não compatível com SELECT * (especifique os campos a serem incluídos OU use FIELDS(ALL), FIELDS(STANDARD) ou FIELDS(CUSTOM) nas instruções SELECT)
Compatível com joins, que são codificados com sintaxe “left,” “right,” "inner," "outer"
Compatível com "consultas de relacionamento", que são codificadas usando a sintaxe de pai-filho
Incompatível com sintaxe de notação de ponto para
percorrer relacionamentos de tabela
Compatível com sintaxe de notação de ponto para percorrer
relacionamentos de tabela
Não são restringidas por limites
É restringido por limites (por exemplo, linhas
retornadas, heap, etc.)

Atualizar seu componente do Lightning para exibir dados

Agora que criamos uma consulta para obter nossos dados, também queremos garantir que eles serão exibidos. Vamos atualizar nosso componente para fazer isso agora.

  1. No Developer Console, volte ao componente do Lightning Books4EveryoneHome.
  2. Atualize seu componente para ficar assim:
    <aura:component implements="flexipage:availableForAllPageTypes" access="global" controller="Books4EveryoneHomeController">
      <aura:attribute name="Books" type="Book__c" />
      <aura:handler name="init" action="{!c.doInit}" value="{!this}"/>
      <lightning:card title="Books4Everyone Books">
        <aura:set attribute="body">
          <table class="slds-table slds-table_bordered slds-table_cell-buffer">
            <thead>
              <tr class="slds-text-title_caps">
                <th scope="col">Book Titles</th>
                <th scope="col">Book Descriptions</th>
              </tr>
            </thead>
            <tbody>
              <aura:iteration items="{!v.Books}" var="books">
                <tr scope="row">
                  <td> {!books.Name}</td>
                  <td> {!books.Description__c}</td>
                </tr>
              </aura:iteration>
            </tbody>
          </table>
        </aura:set>
      </lightning:card>
    </aura:component>
    Isso está um pouco mais complicado do que antes. Nossa primeira grande mudança foi adicionar um controlador ao nosso componente com controller=”Books4EveryoneHomeController”. Isso liga nosso componente à nossa classe do Apex. Adicionamos a seguir uma tabela para exibir nossos dados. Usamos duas colunas, Book Titles (Títulos de livros) e Book Descriptions (Descrições de livros) e usamos um componente aura:iteration para exibir dados sobre os livros. Esse atributo, no momento, está vazio, ou seja, precisamos atualizar nosso controlador JavaScript para colocar dados da classe do Apex no atributo aura.
  3. Clique em Controller (Controlador) no lado direito da página a fim de criar um controlador para seu componente do Lightning.
  4. Atualize o JavaScript do controlador para o seguinte:
    ({
      doInit: function(component, event, helper) {
        var action = component.get("c.getBooks");
        action.setCallback(this, function(data) {
          component.set("v.Books", data.getReturnValue());
          console.log(data.getReturnValue());
        });
        $A.enqueueAction(action);
      }
    })
    Agora você terá dados no seu atributo aura! Essa ação chama a função do Apex getBooks para preencher o atributo Books no componente Books4EveryoneHome.
  5. Salve todas as suas guias abertas.

Vejamos como esse componente funciona na prática!

Nossa etapa final para garantir que a consulta funcionou como esperado é adicionar nosso componente à página inicial. Vamos fazer isso agora.

  1. Na sua organização, navegue até o aplicativo Books4Everyone.
  2. Clique em Home (Início).
  3. No canto superior direito, clique em Configuração e selecione Edit Page (Editar página).
  4. No lado esquerdo do criador de aplicativo Lightning, encontre Books4EveryoneHome na lista de componentes personalizados.
  5. Arraste o componente até o lado esquerdo da página.
  6. Clique em Save (Salvar), ative a página clicando em Activate (Ativar) e selecione Assign as Org Default (Atribuir como padrão da organização); em seguida, clique em Save (Salvar).
  7. Clique em Voltar para retornar à página inicial.
  8. A etapa final é verificar os dados na sua página inicial. Ela deverá ficar mais ou menos assim:

Essa é uma imagem que mostra a guia inicial e o novo componente do Lightning com dados de consulta SOQL

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback