Pular para conteúdo

Aula 07 - Eloquent ORM 💎

🎯 Objetivo da Aula

Dominar o Eloquent, o ORM (Object-Relational Mapper) do Laravel. Vamos aprender a interagir com o banco de dados usando objetos PHP, sem escrever uma única linha de SQL manual, e entender como gerenciar relacionamentos complexos.


🐘 O que é o Eloquent?

O Eloquent transforma tabelas do banco em classes PHP (Models). - Uma Tabela produtos vira uma Classe Produto. - Uma Linha da tabela vira um Objeto dessa classe.

Consultas Básicas

// Buscar todos os produtos
$produtos = Produto::all();

// Buscar pelo ID
$produto = Produto::find(1);

// Criar novo registro
$novo = Produto::create(['nome' => 'Teclado', 'preco' => 150.00]);

🔗 Relacionamentos

Esta é a parte mais poderosa do Eloquent.

Tipo Método Exemplo
1 para 1 hasOne / belongsTo Usuário e Perfil.
1 para N hasMany / belongsTo Post e Comentários.
N para N belongsToMany Alunos e Disciplinas.

Exemplo em Código (1:N)

class Post extends Model {
    public function comentarios() {
        return $this->hasMany(Comentario::class);
    }
}

📊 Estrutura de Relacionamento

erDiagram
    CATEGORIA ||--o{ PRODUTO : possui
    PRODUTO ||--o{ ITEM_PEDIDO : contem
    CLIENTE ||--o{ PEDIDO : faz

🔍 Scopes e Soft Deletes

  • Scopes: Permitem encapsular lógica de consulta (ex: Produto::ativos()->get()).
  • Soft Deletes: Em vez de apagar do banco, o Laravel marca como "excluído" (deleted_at), permitindo recuperação posterior.

Segurança

O Eloquent protege automaticamente contra SQL Injection usando prepared statements.


🧠 Blocos de Destaque

Convenção sobre Configuração

O Eloquent assume que sua tabela é o plural do nome da classe (ex: Model User -> Tabela users). Se fugir desse padrão, você deve definir protected $table.


🛠️ Exercícios Progressivos

  1. Básico: Crie um Model Cliente e busque todos os clientes ordenados pelo nome.
  2. Intermediário: Implemente um relacionamento onde um Pedido pertence a um Cliente.
  3. Desafio: Crie um Query Scope que retorne apenas produtos com preço acima de R$ 100,00.

🚀 Mini-Projeto da Aula

Sistema de Blog Relacional: Crie os Models Post e Comentario. Implemente o relacionamento entre eles e crie uma pequena interface (via Controller e Rota) que exiba um post específico e todos os seus comentários logo abaixo, garantindo que tudo seja carregado via Eloquent.


Próxima Aula: CRUD Completo