Laravel の移行は、データベース スキーマの変更を管理する優れた方法です。これにより、データベース構造をバージョン管理し、時間の経過とともに変更を簡単にロールバックまたは変更できるようになります。このガイドでは、Laravel での移行の作成、実行、ロールバックのプロセスを、実際の例とともに段階的に説明します。
移行を開始する前に、Laravel がインストールされていることを確認してください。これは Composer 経由で行うことができます:
composer create-project --prefer-dist laravel/laravel migration-demo
次に、プロジェクト フォルダーに移動します。
cd migration-demo
データベースを設定するには、Laravel プロジェクトで .env ファイルを開き、データベースの認証情報を更新します。
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database_name DB_USERNAME=your_username DB_PASSWORD=your_password
データベースを構成した後、ローカル環境に新しいデータベースが存在しない場合は作成できます。
artisan コマンドを使用して新しい移行を作成できます。たとえば、ユーザー テーブルの移行を作成するには:
php artisan make:migration create_users_table
このコマンドは、database/migrations ディレクトリに移行ファイルを生成します。ファイル名にはタイムスタンプが含まれ、2024_09_13_123456_create_users_table.php.
のようになります。生成された移行ファイルを開きます。 up() (テーブルの作成を定義する) と down() (テーブルのロールバック方法を定義する) の 2 つのメソッドがあります。
users テーブルの作成例:
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); // Primary key $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); // Created at & Updated at }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }
up() メソッドで、users テーブルの構造を定義します。 down() メソッドは、ロールバックの場合にテーブルを削除する方法 (つまり、テーブルの削除) を定義します。
移行を実行してデータベースにユーザー テーブルを作成するには、次のコマンドを使用します。
php artisan migrate
このコマンドは、まだ実行されていないすべての移行を実行します。次の出力が表示されるはずです:
Migrating: 2024_09_13_123456_create_users_table Migrated: 2024_09_13_123456_create_users_table (0.45 seconds)
データベースに users テーブルが作成されたことを確認できます。
最新の移行をロールバックするには、次のコマンドを使用します:
php artisan migrate:rollback
これにより、users テーブルまたは最新の移行バッチで定義されたテーブルが削除されます。
複数の移行手順をロールバックするには、次を使用します:
php artisan migrate:rollback --step=2
これにより、移行の最後の 2 つのバッチがロールバックされます。
既存のテーブルを変更する場合 (列の追加など)、新しい移行を作成します。
php artisan make:migration add_phone_to_users_table --table=users
これにより、users テーブルを変更するための移行が作成されます。その後、変更を定義できます:
public function up() { Schema::table('users', function (Blueprint $table) { $table->string('phone')->nullable(); // Add phone column }); } public function down() { Schema::table('users', function (Blueprint $table) { $table->dropColumn('phone'); // Remove phone column }); }
移行を実行して変更を適用します:
php artisan migrate
Laravel では、データベースにダミー データをシードすることもできます。シーダーを作成するには、以下を使用します:
php artisan make:seeder UsersTableSeeder
database/seeders/UsersTableSeeder.php にあるシーダー ファイルで、次のデータを定義できます。
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; class UsersTableSeeder extends Seeder { public function run() { DB::table('users')->insert([ 'name' => 'John Doe', 'email' => 'john@example.com', 'password' => Hash::make('password'), ]); } }
次に、以下を使用してシーダーを実行します。
php artisan db:seed --class=UsersTableSeeder
DatabaseSeeder.php のシーダーを呼び出して、移行中にデータベースをシードすることもできます。
データベースをリセットし、すべての移行とシーダーを実行するには:
php artisan migrate:fresh --seed
このコマンドは、すべてのテーブルを削除し、すべての移行を再実行し、データベースをシードします。
これらの手順に従うことで、移行を使用して Laravel でデータベース スキーマの変更を簡単に管理できます。 Laravel の移行は、データベース構造のバージョン管理を維持し、開発、ステージング、実稼働などのさまざまな環境間で同期するために不可欠な部分です。
以上が移行を使用した Laravel でのデータベース スキーマ管理: 詳細なチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。