🧩 Exercícios: Migrations e Schema Builder do Laravel
Spec Backend Com Php E Laravel • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 05.1 — Criação de Tabela com Chave Primária, Índices e Timestamps
Contexto: Criação de Tabela com Chave Primária, Índices e Timestamps no contexto de Migrations e Schema Builder do Laravel.
Requisitos de Execução:
- Escrever migration criando tabela
produtoscom campos tipados e índices.
Resultado Esperado
Migration executada: Tabela `produtos` criada com índices únicos.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_1_SeuNome - Envie na tarefa:
Atividade Cap 05 - Migrations e Schema Builder do Laravel
🔑 Gabarito de Código & Solução Comentada
<?php
// database/migrations/2026_01_01_000000_create_produtos_table.php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('produtos', function (Blueprint $table) {
$table->id();
$table->string('nome', 150)->index();
$table->string('sku', 50)->unique();
$table->decimal('preco', 10, 2);
$table->boolean('ativo')->default(true);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('produtos');
}
};
🔍 Nível 2: Prática
Problema 05.2 — Chave Estrangeira com cascadeOnDelete e Restrições de Integridade
Contexto: Chave Estrangeira com cascadeOnDelete e Restrições de Integridade no contexto de Migrations e Schema Builder do Laravel.
Requisitos de Execução:
- Criar migration da tabela
pedidoscom foreign key referenciandouserscom deleção em cascata.
Resultado Esperado
Chave estrangeira `user_id` configurada com cascadeOnDelete.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_2_SeuNome - Envie na tarefa:
Atividade Cap 05 - Migrations e Schema Builder do Laravel
🔑 Gabarito de Código & Solução Comentada
<?php
// database/migrations/2026_01_01_000001_create_pedidos_table.php
Schema::create('pedidos', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->decimal('total', 10, 2);
$table->string('status')->default('PENDENTE');
$table->timestamps();
});
⚡ Nível 3: Integração
Problema 05.3 — Alteração de Tabela com Schema::table e Rollback Seguro
Contexto: Alteração de Tabela com Schema::table e Rollback Seguro no contexto de Migrations e Schema Builder do Laravel.
Requisitos de Execução:
- Adicionar coluna
descontoe renomear coluna com métododown()correspondente.
Resultado Esperado
Migration de alteração aplicada com suporte a rollback reversível.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_3_SeuNome - Envie na tarefa:
Atividade Cap 05 - Migrations e Schema Builder do Laravel
🔑 Gabarito de Código & Solução Comentada
<?php
// database/migrations/2026_01_01_000002_add_desconto_to_pedidos_table.php
public function up(): void
{
Schema::table('pedidos', function (Blueprint $table) {
$table->decimal('desconto', 8, 2)->default(0.0)->after('total');
});
}
public function down(): void
{
Schema::table('pedidos', function (Blueprint $table) {
$table->dropColumn('desconto');
});
}
🏆 Nível 4: Desafio Corporativo
Problema 05.4 — Migrations Transacionais e Suporte a Schemas Múltiplos
Contexto: Migrations Transacionais e Suporte a Schemas Múltiplos no contexto de Migrations e Schema Builder do Laravel.
Requisitos de Execução:
- Executar migrações complexas encapsuladas em transações com chave de idempotência.
Resultado Esperado
Migração corporativa concluída com commit seguro.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_05_4_SeuNome - Envie na tarefa:
Atividade Cap 05 - Migrations e Schema Builder do Laravel
🔑 Gabarito de Código & Solução Comentada
<?php
// migration_transacional.php
use Illuminate\Support\Facades\DB;
DB::transaction(function () {
// Execução de queries DDL seguras
});
$executado = true;
\Log::info('Operação corporativa executada com sucesso.');