Phalcon - Migration de base de données

La migration de la base de données est importante pour les raisons suivantes -

  • La migration de base de données facilite le transfert de données entre les types de stockage spécifiés.

  • La migration de base de données fait référence au contexte des applications Web migrant d'une plate-forme à une autre.

  • Ce processus a généralement lieu pour garder une trace des données qui sont obsolètes.

Phalcon effectue le processus de migration de base de données de la manière suivante -

Step 1 - Créez un projet nommé “dbProject” dans xampp/wamp annuaire.

Step 2 - Configurez le projet avec la connectivité de base de données appropriée.

<?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- Exécutez la commande de migration des tables incluses dans la base de données «demodb». Pour l'instant, il comprend une table «utilisateurs».

Step 4 - Les fichiers de base de données migrés sont stockés dans le répertoire des migrations dans le dossier «app».

Ainsi, les tables sont migrées avec succès.

Comprendre l'anatomie des fichiers migrés

Le fichier migré a une classe unique qui s'étend Phalcon\Mvc\Model\Migrationclasse. La classe Migration dans Phalcon inclut les méthodesup() et down(). leup() est utilisée pour effectuer la migration tandis que la méthode down annule l'opération.

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 classe UserMigration_100 comme indiqué dans l'exemple ci-dessus comprend un tableau associatif avec quatre sections qui sont -

  • Columns - Comprend un ensemble de colonnes de table.

  • Indexes - Comprend un ensemble d'index de table.

  • References - Inclut toutes les contraintes d'intégrité référentielle (clé étrangère).

  • Options - Tableau avec un ensemble d'options de création de table.

Comme indiqué dans l'exemple ci-dessus, la version 1.0.0 de la base de données a été migrée avec succès. Phalcon peut inclure et exécuter plusieurs processus de migration en fonction de la manière dont le contenu de la base de données est conservé.