SchemaBuilder
Uma tabela define quais dados um banco de dados armazena. O esquema cria ou modifica essa estrutura; O Blueprint descreve suas colunas dentro de um fechamento. Existem adaptadores para SQLite, MySQL, PostgreSQL e SQL Server, com diferenças de dialeto. O esquema aplica PREFIX/DB_PREFIX automaticamente.
Índice · Antes: modelos · Depois: migrações
O exemplo requer conexão e uma tabela de proprietários que suporte a chave composta. É um fragmento esquemático, não um programa independente.
Schema::create("products", func(Blueprint $table) {
$table->id()
$table->string("sku", 50)->unique()
$table->decimal("price", 10, 2)->default(0)
$table->unsignedBigInteger("tenant_id")
$table->unsignedBigInteger("owner_id")
$table->unique(["tenant_id", "sku"])
$table->foreign(["tenant_id", "owner_id"])
->references(["tenant_id", "id"])
->on("owners")
->onDelete("cascade")
$table->timestamps()
})
Esquema
create($table, func(Blueprint $blueprint))table($table, func(Blueprint $blueprint))rename($from, $to)drop($table)edropIfExists($table)hasTable($table)ehasColumn($table, $column)
##Projeto
Tipos: id, increments, integer, tinyInteger, smallInteger, mediumInteger, bigInteger, unsignedInteger, unsignedBigInteger, float, double, decimal, char, string, text, mediumText, longText, date, dateTime, time, timestamp, timestamps, softDeletes, boolean, json e enum.
Modificadores da última coluna: nullable, unsigned, unique(), default e comment. unsigned e o comentário SQL embutido são propriedades do MySQL; os outros motores preservam o tipo portátil sem inventar uma semântica equivalente.
Comandos de tabela:
dropColumn($column)oudropColumn([$a, $b])renameColumn($from, $to)index($columns, $name=nil)unique($columns, $name=nil)ouuniqueIndex(...)dropIndex($name)foreign($columns, $name=nil)->references($columns)->on($table)->onDelete($action)->onUpdate($action)
SQLite reconstrói a tabela transacionalmente quando uma chave estrangeira é adicionada usando Schema::table(), preservando dados, índices e gatilhos explícitos. PostgreSQL usa SERIAL/BIGSERIAL, JSONB e tipos equivalentes. O SQL Server usa delimitadores IDENTITY(1,1) PRIMARY KEY, NVARCHAR(MAX), DATETIME2 e [...].