Phalcon - Migrazione del database
La migrazione del database è importante per i seguenti motivi:
La migrazione del database aiuta a trasferire i dati tra i tipi di archiviazione specificati.
La migrazione del database si riferisce al contesto delle applicazioni basate sul Web che migrano da una piattaforma all'altra.
Questo processo di solito ha luogo per tenere traccia dei dati che sono obsoleti.
Phalcon esegue il processo di migrazione del database nel modo seguente:
Step 1 - Crea un progetto denominato “dbProject” in xampp/wamp directory.
Step 2 - Configurare il progetto con la connettività database appropriata.
<?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- Eseguire il comando per la migrazione delle tabelle incluse all'interno del database “demodb”. Per ora, include una tabella "utenti".
Step 4 - I file di database migrati vengono archiviati nella directory delle migrazioni all'interno della cartella "app".
Pertanto, le tabelle vengono migrate correttamente.
Comprensione dell'anatomia dei file migrati
Il file migrato ha una classe unica che si estende Phalcon\Mvc\Model\Migrationclasse. La classe Migration in Phalcon include i metodiup() e down(). Ilup() viene utilizzato per eseguire la migrazione mentre il metodo down ripristina l'operazione.
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 come mostrato nell'esempio sopra include un array associativo con quattro sezioni che sono:
Columns - Include una serie di colonne della tabella.
Indexes - Include una serie di indici di tabella.
References - Include tutti i vincoli di integrità referenziale (chiave esterna).
Options - Array con una serie di opzioni per la creazione di tabelle.
Come mostrato nell'esempio precedente, la versione 1.0.0 del database è stata migrata correttamente. Phalcon può includere ed eseguire più processi di migrazione a seconda di come viene conservato il contenuto del database.