Phalcon-database-migration
提供:Dev Guides
Phalcon-データベースの移行
データベースの移行は、次の理由で重要です-
- データベースの移行は、指定されたストレージタイプ間でのデータ転送に役立ちます。
- データベースの移行とは、あるプラットフォームから別のプラットフォームに移行するWebベースのアプリケーションのコンテキストを指します。
- このプロセスは通常、古くなっているデータを追跡するために行われます。
Phalconは次の方法でデータベース移行プロセスを実行します-
ステップ1 *-“ dbProject” という名前のプロジェクトを *xampp/wamp ディレクトリに作成します。
- ステップ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/',
] ]);
- ステップ3 *-データベース「demodb」に含まれるテーブルの移行コマンドを実行します。 現時点では、1つのテーブル「users」が含まれています。
- ステップ4 *-移行されたデータベースファイルは、「app」フォルダー内の移行ディレクトリ内に保存されます。
したがって、テーブルは正常に移行されます。
移行されたファイルの構造を理解する
移行されたファイルには、 Phalcon \ Mvc \ Model \ Migration クラスを拡張する一意のクラスがあります。 PhalconのMigrationクラスには、メソッド* 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 には、4つのセクションを持つ連想配列が含まれています-
- 列-一連のテーブル列が含まれます。
- インデックス-一連のテーブルインデックスが含まれます。
- 参照-すべての参照整合性制約(外部キー)が含まれます。
- Options -テーブル作成オプションのセットを持つ配列。
上記の例に見られるように、データベースのバージョン1.0.0は正常に移行されました。 Phalconは、データベースコンテンツの保持方法に応じて、複数の移行プロセスを含めて実行する場合があります。