Phalcon - Миграция базы данных
Миграция базы данных важна по следующим причинам:
Миграция базы данных помогает переносить данные между указанными типами хранилищ.
Миграция базы данных относится к контексту миграции веб-приложений с одной платформы на другую.
Этот процесс обычно имеет место для отслеживания устаревших данных.
Phalcon выполняет процесс миграции базы данных следующим образом:
Step 1 - Создайте проект с именем “dbProject” в xampp/wamp каталог.
Step 2 - Настройте проект с соответствующим подключением к базе данных.
<?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- Выполнить команду миграции таблиц, входящих в базу данных «demodb». На данный момент он включает одну таблицу «пользователи».
Step 4 - Перенесенные файлы базы данных хранятся в каталоге миграции в папке «app».
Таким образом, таблицы успешно перенесены.
Понимание анатомии перенесенных файлов
Перенесенный файл имеет уникальный класс, расширяющий Phalcon\Mvc\Model\Migrationкласс. Класс Migration в Phalcon включает методыup() и down(). Вup() используется для выполнения миграции, а метод down откатывает операцию.
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() {
}
}
Класс UserMigration_100 как показано в приведенном выше примере, включает ассоциативный массив с четырьмя разделами, которые:
Columns - Включает набор столбцов таблицы.
Indexes - Включает набор индексов таблиц.
References - Включает все ограничения ссылочной целостности (внешний ключ).
Options - Массив с набором параметров создания таблицы.
Как видно из приведенного выше примера, версия 1.0.0 базы данных была успешно перенесена. Phalcon может включать и запускать несколько процессов миграции в зависимости от того, как хранится содержимое базы данных.