Phalcon: migración de base de datos

La migración de la base de datos es importante por las siguientes razones:

  • La migración de la base de datos ayuda a transferir datos entre los tipos de almacenamiento especificados.

  • La migración de la base de datos se refiere al contexto de las aplicaciones basadas en web que migran de una plataforma a otra.

  • Este proceso generalmente se lleva a cabo para realizar un seguimiento de los datos que están desactualizados.

Phalcon realiza el proceso de migración de la base de datos de la siguiente manera:

Step 1 - Crea un proyecto llamado “dbProject” en xampp/wamp directorio.

Step 2 - Configure el proyecto con la conectividad de base de datos adecuada.

<?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- Ejecutar el comando de migración de tablas incluidas dentro de la base de datos “demodb”. Por ahora, incluye una tabla "usuarios".

Step 4 - Los archivos de la base de datos migrados se almacenan dentro del directorio de migraciones dentro de la carpeta "aplicación".

Por lo tanto, las tablas se migran correctamente.

Comprensión de la anatomía de los archivos migrados

El archivo migrado tiene una clase única que se extiende Phalcon\Mvc\Model\Migrationclase. La clase Migration en Phalcon incluye los métodosup() y down(). losup() El método se utiliza para realizar la migración, mientras que el método descendente revierte la operación.

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() {  
   } 
}

La clase UserMigration_100 como se muestra en el ejemplo anterior incluye una matriz asociativa con cuatro secciones que son:

  • Columns - Incluye un conjunto de columnas de tabla.

  • Indexes - Incluye un conjunto de índices de tablas.

  • References - Incluye todas las restricciones de integridad referencial (clave externa).

  • Options - Matriz con un conjunto de opciones de creación de tablas.

Como se ve en el ejemplo anterior, la versión 1.0.0 de la base de datos se migró correctamente. Phalcon puede incluir y ejecutar múltiples procesos de migración dependiendo de cómo se mantenga el contenido de la base de datos.