Arquivo para criação de tabelas

O que é?

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'];

  // ...
}
      
    

Criando a tabela do model User

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.

Do zero:

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

Options/Config disponíveis

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.

Próximo