データベースの移行は、開発者が一貫した構造化された方法でデータベース スキーマのバージョン管理や変更を管理できるため、アプリケーション開発の重要な部分です。 PHP では、データベース移行の管理を手動で行うこともできますが、プロセスを自動化する移行ツールを使用する方が効率的で、エラーが発生しにくくなります。移行ツールは、スキーマの変更を処理する体系的な方法を提供し、データベースとアプリケーションのコードの同期を保ちます。
この記事では、一般的なライブラリの使用、ベスト プラクティス、実用的な例など、PHP でデータベースの移行を管理する方法について説明します。
データベースの移行は、データベース スキーマへの変更 (テーブルや列の作成、更新、削除など) をバージョン管理し、それらの変更を制御された方法で適用する方法です。移行により、チームは次のことが可能になります:
PHP でデータベースの移行を処理するにはいくつかの方法がありますが、最も一般的なアプローチは移行ライブラリを使用することです。 Phinx や Doctrine Migrations などの一般的な PHP ライブラリを使用してこれを行う方法を次に示します。
Phinx は、データベース移行の作成と実行を可能にする人気の PHP 移行ツールです。 MySQL、PostgreSQL、SQLite などの複数のデータベース プラットフォームをサポートします。
Phinx をインストールするには、Composer を使用して依存関係として追加できます。
composer require robmorgan/phinx
Phinx には、接続設定やその他の構成オプションを管理するための構成ファイル (phinx.php または phinx.yml) が必要です。以下は phinx.php の設定例です:
<?php return [ 'paths' => [ 'migrations' => 'db/migrations', 'seeds' => 'db/seeds' ], 'environments' => [ 'default' => 'development', 'development' => [ 'adapter' => 'mysql', 'host' => 'localhost', 'name' => 'your_database_name', 'user' => 'root', 'pass' => '', 'charset' => 'utf8', ], 'production' => [ 'adapter' => 'mysql', 'host' => 'production_host', 'name' => 'your_production_database', 'user' => 'prod_user', 'pass' => 'prod_password', 'charset' => 'utf8', ] ] ];
この構成では 2 つの環境 (開発と運用) がセットアップされ、Phinx がデータベースの移行を管理します。
移行を作成するには、次の Phinx コマンドを使用できます:
php vendor/bin/phinx create CreateUsersTable
このコマンドは、db/migrations ディレクトリに移行ファイルを作成します。移行ファイルは次のようになります:
<?php use Phinx\Migration\AbstractMigration; class CreateUsersTable extends AbstractMigration { public function change() { $table = $this->table('users'); $table->addColumn('name', 'string') ->addColumn('email', 'string') ->create(); } }
この移行により、名前と電子メールの 2 つの列を持つユーザー テーブルが作成されます。
移行が作成されたら、次のコマンドを使用してデータベースに移行を適用できます。
php vendor/bin/phinx migrate
Phinx は、まだ実行されていない新しい移行を適用します。特定の環境を指定することもできます:
php vendor/bin/phinx migrate -e production
移行を元に戻す必要がある場合 (変更をロールバックしたい場合など)、Phinx は次のコマンドを提供します。
php vendor/bin/phinx rollback
必要に応じて、特定のバージョンまたはステップにロールバックすることもできます。
php vendor/bin/phinx rollback -t 20210101000000
このコマンドは、指定されたバージョンまで移行をロールバックします。
Doctrine Migrations は、データベース移行用のもう 1 つの人気のあるツールで、特にデータベースの相互作用に既に Doctrine ORM を使用しているプロジェクトに人気があります。 Doctrine と直接統合され、移行を管理するための一連のコマンドが提供されます。
composer require doctrine/migrations
データベース接続と移行パスを定義するには、構成ファイル (migrations.php) をセットアップする必要があります。
migrations.php 設定の例:
<?php use Doctrine\DBAL\DriverManager; use Doctrine\Migrations\Configuration\Configuration; use Doctrine\Migrations\Tools\Console\Command; use Doctrine\Migrations\Tools\Console\ConsoleRunner; // Set up the database connection $conn = DriverManager::getConnection([ 'url' => 'mysql://root:@localhost/your_database_name', ]); // Set up the migrations configuration $config = new Configuration($conn); $config->setMigrationsNamespace('App\Migrations'); $config->setMigrationsDirectory('db/migrations'); // Create the migration tool $console = ConsoleRunner::createApplication($config); $console->run();
Doctrine CLI を使用して移行を生成できます。
php vendor/bin/doctrine-migrations generate
これにより、db/migrations ディレクトリに移行ファイルが作成されます。
移行を実行するには、以下を使用します:
php vendor/bin/doctrine-migrations migrate
このコマンドは、保留中のすべての移行をデータベースに適用します。
移行をロールバックするには、次を使用します:
composer require robmorgan/phinx
必要に応じて、ロールバックする移行バージョンを指定できます。
データベース移行の管理は、PHP アプリケーション開発プロセスの重要な部分です。 Phinx や Doctrine Migrations などの移行ツールを使用すると、データベース スキーマの変更を管理するための構造化された自動化された方法が提供されます。これらのツールは、手動エラーを回避し、環境間で一貫性を維持し、データベース スキーマが制御され、バージョン管理された方法で確実に進化するようにするのに役立ちます。
これらのツールを使用すると、データベースとコードの変更を常に同期させながら、アプリケーションのロジックの構築に集中できます。
以上がPHP でデータベースの移行を管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。