💻 Exemplos: Capítulo 05: Migrations e Schema Builder do Laravel
Especialização em Backend com PHP & Laravel • Demonstrações Práticas Compiláveis
💻 Exemplo 1 — Migration de Criação com Índices e Timestamps
<?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();
$table->softDeletes();
});
}
public function down(): void
{
Schema::dropIfExists('produtos');
}
};
💻 Exemplo 2 — Chave Estrangeira com Cascade
<?php
// database/migrations/2026_01_01_000001_create_pedidos_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('pedidos', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->decimal('total', 10, 2);
$table->string('status')->default('PENDENTE');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('pedidos');
}
};
💻 Exemplo 3 — Migration de Alteração com Rollback Reversível
<?php
// database/migrations/2026_01_01_000002_add_desconto_to_pedidos_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::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');
});
}
};