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
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
📊 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
- Básico: Crie uma migration para uma tabela
categoriascom apenasidenome. - Intermediário: Adicione uma coluna
descricaona tabelaprodutosusando uma nova migration. - 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.