Referência

Os métodos de Schema são encadeáveis e usados dentro do método columns() da sua classe para descrever as colunas da tabela. Escolha a classe de base de acordo com o banco de dados:

  • SQLite3: RotyPHP\SQLite3\SQLiteSchema
  • MySQL: RotyPHP\MySQL\MySQLSchema

varchar

Cria uma coluna do tipo VARCHAR com tamanho máximo definido.

Assinatura

public function varchar(string $column, int $length)

Exemplo

$this->varchar("name", 100);
$this->varchar("email", 150)->unique();

text

Cria uma coluna do tipo TEXT.

Assinatura

public function text(string $column)

Exemplo

$this->text("bio");

int

Cria uma coluna do tipo INTEGER.

Assinatura

public function int(string $column)

Exemplo

$this->int("age");

bigint

Cria uma coluna do tipo BIGINT.

Assinatura

public function bigint(string $column)

Exemplo

$this->bigint("views");

float

Cria uma coluna do tipo FLOAT.

Assinatura

public function float(string $column)

Exemplo

$this->float("price");

bool

Cria uma coluna do tipo BOOLEAN.

Assinatura

public function bool(string $column)

Exemplo

$this->bool("active");

datetime

Cria uma coluna do tipo DATETIME.

Assinatura

public function datetime(string $column)

Exemplo

$this->datetime("created_at");

primKey

Define a coluna como chave primária.

Assinatura

public function primKey()

Exemplo

$this->int("id")->primKey();

autoinc

Aplica auto incremento na coluna.

Assinatura

public function autoinc()

Exemplo

$this->int("id")->primKey()->autoinc();

Observações

O SQL gerado varia conforme o banco de dados:

  • SQLite3: AUTOINCREMENT
  • MySQL: AUTO_INCREMENT

unique

Adiciona a restrição UNIQUE à coluna.

Assinatura

public function unique()

Exemplo

$this->varchar("email", 150)->unique();

default

Define um valor padrão para a coluna.

Assinatura

public function default(string $value)

Exemplo

$this->varchar("status", 20)->default("active");

defaultRaw

Define um valor padrão a partir de uma expressão SQL crua (sem aspas).

Assinatura

public function defaultRaw(string $expression)

Exemplo

$this->datetime("created_at")->defaultRaw("CURRENT_TIMESTAMP");

foreignkey

Adiciona uma chave estrangeira referenciando uma coluna de outra tabela.

Assinatura

public function foreignkey(string $column, string $table, string $key)

Exemplo

$this->int("user_id")->foreignkey("user_id", "users", "id");

build

Monta e retorna a query CREATE TABLE completa.

Assinatura

public function build()

Exemplo

class Users extends SQLiteSchema {
    public string $table = "users";
 
    public function columns() {
        $this->int("id")->primKey()->autoinc();
        $this->varchar("name", 100);
    }
}
 
$schema = new Users();
$schema->columns();
 
echo $schema->build();
// CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(100))