Phalcon-database-migration

提供:Dev Guides
移動先:案内検索

Phalcon-データベースの移行

データベースの移行は、次の理由で重要です-

  • データベースの移行は、指定されたストレージタイプ間でのデータ転送に役立ちます。
  • データベースの移行とは、あるプラットフォームから別のプラットフォームに移行するWebベースのアプリケーションのコンテキストを指します。
  • このプロセスは通常、古くなっているデータを追跡するために行われます。

Phalconは次の方法でデータベース移行プロセスを実行します-

ステップ1 *-“ dbProject” という名前のプロジェクトを *xampp/wamp ディレクトリに作成します。

dbproject

  • ステップ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」が含まれています。

demodb

  • ステップ4 *-移行されたデータベースファイルは、「app」フォルダー内の移行ディレクトリ内に保存されます。

user.php

したがって、テーブルは正常に移行されます。

移行されたファイルの構造を理解する

移行されたファイルには、 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は、データベースコンテンツの保持方法に応じて、複数の移行プロセスを含めて実行する場合があります。