Exibir livros com seus autores
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 06:52 minutos, caso você queira retroceder e ver o início da etapa novamente.)
Introdução
Nesta etapa, você continuará a criar a página inicial perfeita da Books4Everyone. Eles amam o fato de poder exibir títulos de livro na página inicial e deram ideias sobre outras informações que eles gostariam de mostrar. O desenvolvedor deu a você algumas novas ideias do que eles gostariam de ver na página inicial.
Entender o funcionamento dos relacionamentos no Salesforce
Em SOQL, usamos consultas de relacionamento para obter os mesmos dados que você obteria de um join em SQL. Só podemos fazer isso se os dois objetos de consulta tiverem relação. Felizmente, o pacote Books4Everyone já criou todas as relações de que precisamos.
Vamos criar algumas dessas consultas de relacionamento para preparar a solicitação definitiva da Books4Everyone. Para testar cada consulta, vamos ter que atualizar nossa classe do Apex e nosso componente do Lightning.
Criar um right outer join
- Abra o Developer Console e a classe do Apex Books4EveryoneHomeController.
- Adicione o seguinte bloco de código depois do primeiro método.
@AuraEnabled public static List<Book__c> getBooksAndAuthor() { return; //Your Query here! }
Veja a primeira consulta sugerida pela Books4Everyone.SELECT a.Name, b.Name, b.Description FROM Author a RIGHT JOIN Book b ON (b.Author=a.Name)
Em SOQL, escrevemos assim.SELECT Name, Description__c, Author__r.Name FROM Book__c
- Adicione a nova consulta SOQL ao seu método. Ele deve ficar assim.
@AuraEnabled public static List<Book__c> getBooksAndAuthor() { return [SELECT Name, Description__c, Author__r.Name FROM Book__c]; }
Agora, vamos atualizar nosso componente do Lightning home page. - No Developer Console, abra o componente do Lightning Books4EveryoneHome.
- Atualize a tabela para ficar assim.
<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> <th scope="col">Author</th> </tr> </thead> <tbody> <aura:iteration items="{!v.Books}" var="books"> <tr scope="row"> <td> {!books.Name}</td> <td> {!books.Description__c}</td> <td> {!books.Author__r.Name}</td> </tr> </aura:iteration> </tbody> </table>
- Abra o arquivo JavaScript Books4EveryoneHomeController e atualize a ação para chamar nossa nova função.
var action = component.get("c.getBooksAndAuthor");
O código do controlador agora deve ficar assim.({ doInit: function(component, event, helper) { var action = component.get("c.getBooksAndAuthor"); action.setCallback(this, function(data) { component.set("v.Books", data.getReturnValue()); console.log(data.getReturnValue()); }); $A.enqueueAction(action); } })
- Salve todos os arquivos e atualize a página.