Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Laravel ::: Artigos e Tutorias ::: CRUD - CREATE, READ, UPDATE, DELETE

Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 3

Quantidade de visualizações: 2891 vezes
Na parte 2 deste tutorial sobre CRUD em Laravel usando PHP e MySQL (MariaDB) nós criamos uma rota de direcionamento do tipo recursos, ou seja, para um controlador LivroController que contém todos os métodos necessários para manipular o modelo (model) Livro.

Fizemos também toda a parte do CREATE do nosso CRUD. Dessa forma, a gravação do livro no banco de dados MySQL já está completo. Nessa terceira parte do tutorial nós vamos listar os livros já cadastrados e oferecer as opções para exibir os detalhes de um livro, editá-lo ou excluí-lo. Vamos começar com a listagem.

Como listar os livros já cadastrados

O primeiro passo para listar os livros cadastrados na tabela do banco de dados MySQL é acrescentar um método index() no controle LivroController. Abra o arquivo LivroController.php e modifique-o para a versão abaixo:

<?php

namespace App\Http\Controllers;

use App\Models\Livro;
use Illuminate\Http\Request;

class LivroController extends Controller{
  // mostra a view listando os livros cadastrados
  public function index(){
    // obtém todos os livros cadastrados
    $livros = Livro::all();
    
    // direciona para a view e fornece um vetor
    // contendo os livros
    return view('livros.index', compact('livros'));
  }  

  // mostra a view para cadastrar um novo livro
  public function create(){
    return view('livros.create');
  }

  // recebe as informações do formulário e as grava
  // no banco de dados
  public function store(Request $request){
    // valida o formulário
    $request->validate([
      'titulo' => 'required',


Veja que no método index() nós fazemos uma chamada ao método all() do Eloquent para obter todos os registros da tabela livros. Em seguida nós fornecemos o vetor retornado para a view index.

Vamos agora criar a view e aprender como obter a lista de livros enviada pelo controller e exibí-la.

Como listar na view os dados recebidos do controller LivroController

Vá até o diretório C:\xampp\htdocs\biblioteca\resources\views\livros e crie um arquivo chamado index.blade.php. Modifique o seu código para a listagem abaixo:

<html>
<head>
  <meta charset="utf-8">
  <title>Biblioteca</title>
</head>
<body>

<h1>Livros Cadastrados</h1>

@if($status = Session::get('mensagem'))
  <h2>{{ $status }}</h2>
@endif

<h4><a href="{{ route('livros.create') }}">Cadastrar 
  Novo Livro</a></h4>

<table width="709" border="1" cellspacing="0" cellpadding="3">
  <tr>
    <td width="85" align="center"><strong>Id</strong></td>
    <td width="161" align="center"><strong>Título</strong></td>
    <td width="156" align="center"><strong>Autor</strong></td>
    <td width="98" align="center"><strong>Páginas</strong></td>
    <td width="167" align="center"><strong>Opções</strong></td>
  </tr>
  
  @foreach($livros as $livro)
    <tr>
      <td align="center">{{ $livro->id }}</td>
      <td>{{ $livro->titulo }}</td>
      <td>{{ $livro->autor }}</td>
      <td align="center">{{ $livro->paginas }}</td>


Novamente eu mantive a formatação mínima para facilitar o entendimento do código. Já no topo da página nós temos um link que leva para a rota route('livros.create'). Isso permite cadastrar um novo livro.

Em seguida temos um laço @foreach($livros as $livro) que percorre o vetor recebido a partir do controller LivroController. Para cada item desse vetor nós criamos uma nova linha na tabela HTML. Note que já forneci as opções para manipular os livros individuais, a saber, Detalhes, Editar e Excluir.

Já temos tudo pronto! Direcione o seu navegador para a URL http://localhost/biblioteca/public/livros e teremos o seguinte resultado:



É claro que se você clicar em uma das opções exibidas para cada registro, um erro ocorrerá. Experimente, por exemplo, clicar no botão Excluir de algum dos livros listados. De imediato teremos a seguinte mensagem de erro:

BadMethodCallException
Method App\Http\Controllers\LivroController::destroy does not exist.
http://localhost/biblioteca/public/livros/5
Bad Method Call
Did you mean App\Http\Controllers\LivroController::store() ?

Isso aconteceu porque o nosso controller LivroController ainda não possui o método que permite excluir o livro. Vamos finalizar esta parte adicionando mais este método ao controller?

Como excluir um livro usando o método destroy() do LivroController

Abra novamente o arquivo LivroController.php e modifique-o para o código abaixo (note que vamos somente incluir o método destroy():

<?php

namespace App\Http\Controllers;

use App\Models\Livro;
use Illuminate\Http\Request;

class LivroController extends Controller{
  // mostra a view listando os livros cadastrados
  public function index(){
    // obtém todos os livros cadastrados
    $livros = Livro::all();
    
    // direciona para a view e fornece um vetor
    // contendo os livros
    return view('livros.index', compact('livros'));
  }  

  // mostra a view para cadastrar um novo livro
  public function create(){
    return view('livros.create');
  }

  // recebe as informações do formulário e as grava
  // no banco de dados
  public function store(Request $request){
    // valida o formulário
    $request->validate([
      'titulo' => 'required',
      'autor' => 'required',
      'paginas' => 'required']);
    
    // obtém os valores do form
    Livro::create($request->all());
     
    // direciona para página cadastro novamente,
    // com uma mensagem de sucesso


Veja que, no método destroy(), nós fazemos uma chamada ao método delete() do Eloquent e redirecionamos o usuário para a view index, juntamente com uma mensagem indicando que o livro foi excluído com sucesso.

Vamos lá. Sua vez. Clique no botão Excluir de um dos livros e veja o resultado. Na parte 4 do tutorial nós vamos concluir as opções de mostrar os detalhes do livro e permitir alterá-lo. Até lá!

Leia a parte 4 aqui: Como criar um CRUD completo em Laravel 8 - CRUD em Laravel usando PHP e MySQL (MariaDB) - Parte 4

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de Laravel

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 29 usuários muito felizes estudando em nosso site.