PHP

17 jun, 2020

Como fazer um CRUD no Laravel, do zero – PARTE 2

Publicidade

Hoje, continuamos o tutorial sobre como fazer um CRUD no Laravel. Se você perdeu a parte 1, na semana passada, LEIA AQUI.

  • 1 – R de Read (Leitura de um Registro)

Agora que temos o nosso cadastro de produto devidamente configurado, vamos fazer com que o nosso sistema o encontre e mostre na tela para o usuário. No seu arquivo de rotas web.php crie uma nova rota do tipo get, dessa vez com um parâmetro, o id. Esse id será passado diretamente na rota, para que possamos realizar a busca no banco de dados e encontrar o registro.

No Laravel, os parâmetros obrigatórios de uma rota são informados entre duas chaves, como no exemplo acima, onde estamos aguardando obrigatoriamente um id.

Agora precisamos criar em nosso ProdutosController a função show(), que receberá o id informado na rota e fará a busca no banco de dados. Após obter o registro, a função retornará uma view com um formulário preenchido com as informações do produto.

A sua função show() deve ficar igual a minha:

Perceba que a função show() tem o argumento $id, que será obtido através da nossa rota recém criada. Com esse id em mãos conseguimos usar uma outra função da model que é a findOrFail(), que recebe o id como argumento e o usa para tentar encontrar o registro na tabela, e caso não encontre, exibe uma erro. Com nosso produto devidamente encontrado, o resgatamos na variável $produto, e em seguida retornamos uma view, só que dessa vez com um array contendo o produto encontrado.

Agora chegou a hora de criarmos de fato a view, em resources/views/produtos crie um arquivo chamado show.blade.php e o deixe igual ao meu:

Perceba que agora eu estou colocando um valor em cada input! Justamente por ter enviado, lá na função show(), a variável $produto, é que eu consigo acessar cada informação do objeto.

Chegou a hora de testar, caso o seu servidor não esteja ligado, no seu terminal na raiz do projeto digite:

php artisan serve

E acesse, em seu navegador, localhost:8000/produto/ver/1 (o número 1 é o id do produto, você pode criar vários produtos e testar com todos os ids)

Muito bacana, certo?! Nossos campos vieram preenchidos com as informações do produto buscado!

Crie mais registro, brinque com isso, faça experimentos!

  • 1 – U de Update (Atualizando um registro)

Chegou a hora de executarmos uma atualização em nosso registro. Agora que fizemos a Criação e a Visualização, ficou bem mais fácil, pode iremos utilizar os códigos de ambas as funções, store() e show(). No seu arquivo de rotas web.php crie uma nova rota para carregarmos um formulário de edição.

Perceba que da mesma forma que usamos o id na rota de visualização, também usaremos nessa de edição, afinal de contas precisamos saber qual registro vamos alterar. Com a rota configurada, precisamos criar a função edit() no nosso ProdutosController, da seguinte forma:

Perceba que a função edit() é bem parecida com a show(), pois seguimos a mesma lógica: obtemos um registro e retornamos uma view com os seus dados. 

Em resources/views/produtos crie o arquivo edit.blade.php e o deixe igual ao meu:

O verbo correto para executar uma atualização é o PUT/PATCH e não o POST, mas como o nosso foco são apenas as interações no banco de dados vou deixar esse assunto para um próximo artigo.

Como você percebeu, temos um formulário, mas dessa vez ele não está com os campos vazios, ele já virá preenchido com os dados do produto obtido na função edit(). O próximo passo é criar uma rota nova para receber as informações deste formulário.

Da mesma forma que precisamos informar o id nas duas últimas rotas que criamos, faremos da mesma forma nessa, pois precisamos saber qual registro irá receber as informações. Veja que eu dei um nome a minha rota, a chamei de alterar_produto, isso quer dizer que podemos usar a função route() lá na view para invocar esse caminho, com a diferença de que agora é necessário informar qual é o id.

Perceba que além de invocar a rota pelo nome, estamos separando com uma vírgula e passando um array com o argumento esperado, o id.

Vamos criar, em nosso ProdutosController, a função update():

Perceba que dessa vez a nossa função possui dois argumentos! O primeiro irá receber as informações enviadas pelo formulário, e o segundo irá receber o id que informamos lá na nossa função route().

Chegou a hora de testar, abra o seu navegador em localhost:8000/produto/editar/1:

Agora chegou a hora de alterarmos os dados, substitua as informações nos campos.

Clique em Salvar

Vamos confirmar se a atualização realmente ocorreu lá no nosso banco de dados.

Perceba que o campo updated_at foi atualizado com a data e hora da última atualização, que no nosso caso foi agora.

Muito bem! Criamos, Visualizamos e Editamos um registro, agora chegou a hora de Excluir.

 

  • 2 – D de Delete (Excluindo um Registro)

 

Chegou a hora de excluirmos um registro! No seu arquivo de rotas web.php crie uma nova rota para carregarmos um formulário de confirmação.

Novamente, precisamos do id para saber qual é o registro que iremos excluir!

Agora vamos criar, no nosso ProdutosController, a função delete().

Assim como o show() e o edit(), estamos encontrando o nosso registro e retornando ele para a view! Precisamos agora criá-la, em seu diretório resources/views/produtos crie o arquivo delete.blade.php e o deixe igual ao meu:

Novamente, o verbo correto para deletar um registro é o DELETE e não o POST, mas como o foco do tutorial é interações com banco de dados vamos deixar esse assunto para um outro artigo.

Agora precisamos criar a rota de exclusão no nosso arquivo de rotas web.php.

Perceba que também precisamos informar qual é o id do registro que vamos excluir, e além disso eu nomeei a rota para facilitar a sua invocação na view, usando a função route().

Antes de mais nada, precisamos criar a função destroy() no nosso ProdutosController.

Assim como na edição e na visualização, estamos usando o id para encontrar o nosso registro e, logo em seguida, usamos o método delete(), para efetuar a exclusão em nosso banco.

Só falta configurarmos o nosso formulário, para chamar a função destroy() quando o usuário clicar no botão Sim.

Estamos usando a função route() para invocar nossa rota pelo nome, e não se esqueça de passar o id, que é um argumento obrigatório da rota.

Chegou a hora de testar! Abra, no seu navegador, localhost:8000/produto/excluir/1

Clique em Sim

Vamos verificar no nosso banco de dados se o registro foi realmente excluído.

Nossa tabela está vazia! Ou seja, o registro foi devidamente excluído!

Gostou desse tutorial? Deu tudo certo? Compartilhe nos comentários como você se saiu na execução deste tutorial!