Phalcon - Migração de banco de dados
A migração do banco de dados é importante pelos seguintes motivos -
A migração do banco de dados ajuda na transferência de dados entre os tipos de armazenamento especificados.
A migração de banco de dados se refere ao contexto de aplicativos baseados na web que migram de uma plataforma para outra.
Esse processo geralmente ocorre para manter um controle dos dados que estão desatualizados.
O Phalcon executa o processo de migração de banco de dados da seguinte maneira -
Step 1 - Crie um projeto chamado “dbProject” dentro xampp/wamp diretório.
Step 2 - Configure o projeto com a conectividade de banco de dados apropriada.
<?php
/*
* Modified: preppend directory path of current file,
because of this file own different ENV under between Apache and command line.
* NOTE: please remove this comment.
*/
defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?: realpath(dirname(__FILE__) . '/../..'));
defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app');
return new \Phalcon\Config(['database' => [
'adapter' => 'Mysql',
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'demodb',
'charset' => 'utf8', ],
'application' => [ 'appDir' => APP_PATH . '/',
'controllersDir' => APP_PATH .
'/controllers/', 'modelsDir' => APP_PATH .
'/models/', 'migrationsDir' => APP_PATH .
'/migrations/', 'viewsDir' => APP_PATH .
'/views/','pluginsDir' => APP_PATH .
'/plugins/', 'libraryDir' => APP_PATH .
'/library/', 'cacheDir' => BASE_PATH .
'/cache/', 'baseUri' => '/dbProject/',
] ]);
Step 3- Executar o comando de migração das tabelas incluídas na base de dados “demodb”. Por enquanto, inclui uma tabela “usuários”.
Step 4 - Os arquivos de banco de dados migrados são armazenados dentro do diretório de migrações dentro da pasta “app”.
Assim, as tabelas são migradas com sucesso.
Compreendendo a anatomia dos arquivos migrados
O arquivo migrado tem uma classe única que estende Phalcon\Mvc\Model\Migrationclasse. A classe de migração no Phalcon inclui os métodosup() e down(). oup() método é usado para executar a migração enquanto o método down reverte a operação.
Users.php
<?php
use Phalcon\Db\Column;
use Phalcon\Db\Index;
use Phalcon\Db\Reference;
use Phalcon\Mvc\Model\Migration;
/**
* Class UserMigration_100
*/
class UserMigration_100 extends Migration {
/**
* Define the table structure
*
* @return void
*/
public function morph() {
$this->morphTable('user', [
'columns' => [
new Column( 'Id', [
'type' => Column::TYPE_INTEGER,
'notNull' => true,
'autoIncrement' => true,
'size' => 11, 'first' => true ] ),
new Column( 'username', [
'type' => Column::TYPE_VARCHAR,
'notNull' => true,
'size' => 40,
'after' => 'Id' ] ),
new Column( 'email', [
'type' => Column::TYPE_VARCHAR,
'notNull' => true,
'size' => 40,
'after' => 'username' ] ),
new Column( 'password', [
'type' => Column::TYPE_VARCHAR,
'notNull' => true,
'size' => 10,
'after' => 'email' ] )
],
'indexes' => [new Index('PRIMARY', ['Id'], 'PRIMARY') ],
'options' => [ 'TABLE_TYPE' => 'BASE TABLE',
'AUTO_INCREMENT' => '3', 'ENGINE' => 'InnoDB',
'TABLE_COLLATION' => 'latin1_swedish_ci' ],
] );
}
/**
* Run the migrations
* * @return void
*/
public function up() {
}
/**
* Reverse the migrations
*
* @return void
*/
public function down() {
}
}
A classe UserMigration_100 como mostrado no exemplo acima, inclui matriz associativa com quatro seções que são -
Columns - Inclui um conjunto de colunas da tabela.
Indexes - Inclui um conjunto de índices de tabela.
References - Inclui todas as restrições de integridade referencial (chave estrangeira).
Options - Array com um conjunto de opções de criação de tabelas.
Conforme visto no exemplo acima, a versão 1.0.0 do banco de dados foi migrada com sucesso. O Phalcon pode incluir e executar vários processos de migração, dependendo de como o conteúdo do banco de dados é mantido.