🚀 Capítulo 17: Operações Secretas com Eloquent (Tema: Missão Impossível)

NOTE

Este capítulo utiliza a temática de Missão Impossível para explicar o Eloquent ORM no Laravel. Aprenda a manipular o banco de dados sem digitar comandos SQL!


1. 🎯 Objetivo da Aula

Compreender o conceito de ORM (Object-Relational Mapping) através do Eloquent do Laravel, aprendendo a fazer as operações básicas de banco de dados (CRUD: Criar, Ler, Atualizar e Deletar) usando apenas código PHP.

2. 🏢 O Cenário Prático (Seu Desafio)

O agente secreto Ethan Hunt precisa gerenciar a lista de espiões da sua equipe. Ele precisa cadastrar novos agentes, buscar a ficha de um agente específico, atualizar o status da missão e, se um agente for capturado ou virar casaca, deletar o registro dele do sistema!

No Laravel, para não precisarmos escrever comandos SQL complexos (como SELECT * FROM agentes), nós usamos o Eloquent ORM.

  • O Eloquent cria uma classe especial chamada Model para cada tabela do banco.
  • Mexer nessa classe em PHP altera automaticamente os dados reais lá no banco de dados! Seu desafio é gerenciar essa equipe secreta!

🧠 Fundamentos: A Teoria Traduzida

🕵️‍♂️ 1. O que é um Model?

É a classe que representa a sua tabela. Se você tem a tabela agentes, você cria o model Agente.

php artisan make:model Agente

📝 2. As Operações do CRUD:

Criar (Create):

$agente = new Agente();
$agente->nome = "Ethan Hunt";
$agente->save(); // Salva no banco!

Ler (Read):

$todos = Agente::all(); // Pega todos os agentes
$umAgente = Agente::find(1); // Busca o agente com ID 1

Atualizar (Update):

$agente = Agente::find(1);
$agente->status = "Em missão";
$agente->save(); // Atualiza no banco!

Deletar (Delete):

$agente = Agente::find(1);
$agente->delete(); // Apaga do banco!

4. 📖 Exemplo Guiado: O Relatório do Ethan

Veja como é simples buscar todos os agentes e exibir o nome deles usando o Eloquent dentro de um Controller:

<?php
namespace App\Http\Controllers;
use App\Models\Agente;
 
class AgenteController extends Controller {
    public function listar() {
        $agentes = Agente::all();
 
        foreach ($agentes as $agente) {
            echo "Agente secreto: " . $agente->nome . "\n";
        }
    }
}
?>

5. 🛠️ Prática Obrigatória 1: Buscando Dados

  1. Qual é o método do Eloquent (como visto no texto) que usamos para buscar um registro específico no banco passando apenas o número do ID dele?

6. 🛠️ Prática Obrigatória 2: Salvando Dados

  1. Depois de criar um novo objeto e preencher os dados dele, qual método devemos chamar para que o Eloquent realmente grave as informações no banco de dados?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 17 PHP_MissaoImpossivel) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

spec_backend_com_php_e_laravel/
├── capitulos/
│   └── capitulo_17_missao_impossivel.md

💡 Checkpoint de Lógica

O Eloquent assume por padrão que a sua tabela está no plural (ex: agentes) e que o seu Model está no singular (ex: Agente). Se você seguir esse padrão, não precisará configurar quase nada!

10. 🔥 Desafio de Fixação

Pesquise como fazer uma busca filtrada usando o Eloquent (Dica: procure pelo método Agente::where(...)).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Usamos o método find(), exemplo: Agente::find($id). Gabarito da Prática 2:
  2. Devemos chamar o método save().

Capitulo Anterior | Proximo Capitulo