ホームページ >バックエンド開発 >PHPチュートリアル >CakePHP で Phinx を使用するにはどうすればよいですか?

CakePHP で Phinx を使用するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-06-04 08:02:51732ブラウズ

CakePHP は、開発者が効率的な Web アプリケーションを作成するのに役立つさまざまなツールと機能を提供する人気のある PHP MVC フレームワークです。 Phinx は、開発者がデータベースの変更を簡単に管理できるようにする柔軟なデータベース移行ライブラリです。この記事ではCakePHPでPhinxを使う方法を紹介します。

  1. Phinx のインストール

Composer を使用して Phinx をインストールします:

composer require robmorgan/phinx

インストールが完了すると、アプリケーションの vendor/bin に配置されます。 ディレクトリ内の Phinx 実行可能ファイルを取得します。

  1. Phinx の構成

app/config ディレクトリに新しいファイル phinx.php を作成し、次の内容を追加します。

use CakeCoreConfigure;

return [
   'paths' => [
       'migrations' => [
           __DIR__ . '/../config/Migrations',
       ],
       'seeds' => [
           __DIR__ . '/../config/Seeds',
       ],
   ],
   'environments' => [
       'default_migration_table' => 'phinxlog',
       'default_database' => 'default',
       'default' => [
           'adapter' => 'mysql',
           'host' => '127.0.0.1',
           'name' => 'mydatabase',
           'user' => 'myuser',
           'pass' => 'mypassword',
           'port' => '3306',
           'charset' => 'utf8'
       ],
   ]
];

この設定ファイルは、アプリケーションの config/Migrations および config/Seeds ディレクトリで移行ファイルとシード ファイルを検索し、MySQL を使用してサーバーに接続するように Phinx に指示します。名前は mydatabase のデータベースです。

  1. 移行の作成

config/Migrations ディレクトリに新しい移行ファイル (例: CreateUsersTable.php) を作成します。移行ファイルでは、データベース上で移行を実行または元に戻すための up メソッドと down メソッドを定義する必要があります。

例:

use PhinxMigrationAbstractMigration;

class CreateUsersTable extends AbstractMigration
{
   public function change()
   {
       $table = $this->table('users');
       $table->addColumn('username', 'string', ['limit' => 20])
             ->addColumn('password', 'string', ['limit' => 100])
             ->addColumn('email', 'string', ['limit' => 50])
             ->addColumn('created', 'datetime')
             ->addColumn('updated', 'datetime')
             ->create();
   }
}

この移行ファイルは、データベースに新しい users テーブルを作成し、usernamepassword を追加します。 、emailcreated、および updated 列。

  1. 移行の実行

次のコマンドを使用して移行を実行します:

vendor/bin/phinx migrate

このコマンドは、保留ステータス (適用されていない) にあるすべての移行ファイルを実行します。 )。

次のコマンドを使用して、移行を以前の状態にロールバックできます:

vendor/bin/phinx rollback

特定の移行前の状態にロールバックする場合は、次のコマンドを使用します。

vendor/bin/phinx rollback -t {timestamp}

{timestamp} は、ロールバックされる移行のタイムスタンプです。

    シードの作成

config/Seeds ディレクトリに新しいシード ファイル (例: UsersSeeders.php) を作成します。 。シード ファイルでは、特定の基準に一致するテーブルにデータを設定する run メソッドを定義する必要があります。

例:

use PhinxSeedAbstractSeed;

class UsersSeeder extends AbstractSeed
{
   public function run()
   {
       $data = [
           [
               'username' => 'admin',
               'password' => password_hash('123456', PASSWORD_DEFAULT),
               'email' => 'admin@example.com',
               'created' => date('Y-m-d H:i:s'),
               'updated' => date('Y-m-d H:i:s')
           ],
           [
               'username' => 'user1',
               'password' => password_hash('password', PASSWORD_DEFAULT),
               'email' => 'user1@example.com',
               'created' => date('Y-m-d H:i:s'),
               'updated' => date('Y-m-d H:i:s')
           ]
       ];

       $table = $this->table('users');
       $table->insert($data)->save();
   }
}

この torrent は、2 人の初期ユーザーを

users テーブルに挿入します。

    トレントの実行
次のコマンドを使用してすべてのトレント ファイルを実行します:

vendor/bin/phinx seed:run

このコマンドは、保留ステータス (適用されていない) にあるすべてのトレントを実行します。 ) 書類。

次のコマンドを使用して、特定のシード ファイルを実行できます。

vendor/bin/phinx seed:run -s {seederName}

ここで、

{seederName} は、実行するシード ファイルの名前です。

CakePHP で Phinx を使用する方法がわかったので、データベースの変更を管理するために Phinx を使用してみます。

以上がCakePHP で Phinx を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。