Você deve escrever o código de criação da tabela no arquivo /app_old/_table.create.order.php e habilitar a função
DB_FUNC_CREATE_TABLES.
A partir daí, esse arquivo será executado sempre antes dos Models e criará as tabelas do Banco de Dados automáticamente.
Um detalhe que você deve ficar atendo, é que não precisa de Includes, Requires ou Core::useModel neste arquivo, ele pegará todos os Models automaticamente
e executará a criação das tabelas. Porém, você deve definir corretamente no seu Model o nome da tabela daquele model em específico.
Model padrão: User.php -> /app_old/model/User.php
class User extends Model
{
public $id;
public $name;
public $login;
public $email;
public $password;
public static $table = 'users'; // aqui fica o nome da tabela no banco de dados
public static $fillable = ['id', 'name', 'login', 'email', 'password'];
// ...
}
Dentro do arquivo _table.create.order.php vamos colocar o seguinte código:
User::createDbTable([
'name' => User::$table,
'columns' => [
'id' => 'INT NOT NULL PRIMARY KEY AUTO_INCREMENT',
'name' => 'VARCHAR(60) NOT NULL',
'login' => 'VARCHAR(200) NOT NULL',
'email' => 'VARCHAR(256)',
'password' => 'VARCHAR(256) NOT NULL',
],
'foreignKeys' => [
// 'modelColumn' => 'tableReferenced|id|onUpdate:cascade',
],
'option.createTimestampColumns' => true,
]);
É bem semelhante à um SQL normal, porém em name utilizamos o Model e o atributo $table dele.
O método createDbTable é herdado da classe Model que contém diversos métodos para trabalhar com o Banco de Dados.
Bom, precisamos passar para o método createDbTable() um Array contendo 1 índice obrigatório e 1 índice opcionais, são eles:
Índice 0: nome da tabela e as colunas
Índice 1 (opcional): chaves estrangeiras (foreign keys)
Options (opcional): opções padrões. A option createTimestampColumns criará o campo created_at e updated_at na
sua tabela. Uma option fica dentro do Array e sempre começa com option.nomeDaOpcao
Config (opcional): configurações da tabela, sempre começando com config.nomeDaConfig
Option name | Default | Description |
---|---|---|
option.createTimestampColumns | true | Cria 2 colunas timestamp em sua tabela: created_at e updated_at |
option.unique | - | Define uma coluna como UNIQUE |
config.engine | InnoDB | Define a Engine da sua tabela |
config.charset | utf8 | Define o charset da tabela e das colunas |
config.collate | utf8_general_ci | Define o collate da sua tabela |
Não se preocupe se não entender algum código que ainda não foi explicado. Foque apenas no que estamos explicando atualmente.