Pular para conteúdo

Aula 06 - Banco de Dados e Migrations 🗄️

🎯 Objetivo da Aula

Entender como o Laravel gerencia o esquema do banco de dados através das Migrations. Vamos aprender a versionar nosso banco e popular dados iniciais com Seeders e Factories.


🛡️ Migrations: O Git do seu Banco

Migrations permitem que você defina a estrutura da tabela em código PHP, garantindo que todos os desenvolvedores do time tenham a mesma estrutura de banco.

Criando uma Migration

$ php artisan make:migration create_produtos_table

Definindo a Estrutura

public function up(): void
{
    Schema::create('produtos', function (Blueprint $table) {
        $table->id();
        $table->string('nome');
        $table->decimal('preco', 8, 2);
        $table->timestamps();
    });
}

🔄 Comandos Essenciais

# Executa as migrations pendentes
$ php artisan migrate

# Reverte a última migração
$ php artisan migrate:rollback

# Apaga tudo e recria o banco (CUIDADO!)
$ php artisan migrate:fresh

📊 Fluxo de Versão do Banco

graph TD
    A[Migration 1: Users] --> B[Migration 2: Posts]
    B --> C[Migration 3: Comments]
    C --> D{Artisan Migrate}
    D --> E[Tabela Users]
    D --> F[Tabela Posts]
    D --> G[Tabela Comments]

🌲 Seeders e Factories

  • Seeders: Servem para inserir dados específicos ou fixos (ex: um usuário admin).
  • Factories: Servem para gerar milhares de dados de teste aleatórios usando a biblioteca Faker.

Exemplo de Factory

User::factory()->count(50)->create(); - Isso cria 50 usuários fictícios no banco em segundos!


🧠 Blocos de Destaque

Atenção com .env

Certifique-se de configurar corretamente as credenciais (DB_HOST, DB_DATABASE, DB_USERNAME, DB_PASSWORD) no seu arquivo .env antes de rodar as migrations.


🛠️ Exercícios Progressivos

  1. Básico: Crie uma migration para uma tabela categorias com apenas id e nome.
  2. Intermediário: Adicione uma coluna descricao na tabela produtos usando uma nova migration.
  3. Desafio: Crie um Seeder que cadastre 10 categorias automaticamente ao rodar o comando db:seed.

🚀 Mini-Projeto da Aula

Cenário de Loja Virtual: Crie a estrutura de tabelas para um e-commerce simples: produtos, categorias e pedidos. Execute as migrations e use uma Factory para popular o banco com 100 produtos de teste para que possamos testar a performance no futuro.


Próxima Aula: Eloquent ORM