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))