Laravel
でアプリケーションを構築する際、データベースのテーブル定義をコードで管理できるマイグレーション
は必須の技術です。
この記事では、以下の点をシンプルに解説します:
- よく使うマイグレーションコマンド
- 代表的なデータ型の記述例
- 実際に生成されるファイル名の例
マイグレーションファイルの記述方法についても、「文字列ってどう書いたっけ?」と調べなくても済むように、必要な情報はなるべくこの1ページにまとめました
■環境:
Laravel 12.3.0
1. ユーザー情報テーブルの作成
コマンド
php artisan make:migration create_users_table --create=users
生成されるファイル名(例)
database/migrations/2025_04_17_123456_create_users_table.php
中身の編集例(代表的なデータ型を含む)
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id(); // 自動増分の主キー (bigint)
$table->string('name'); // 文字列(varchar 255)
$table->string('email')->unique(); // 一意制約つき文字列
$table->text('profile'); // 長めのテキスト(TEXT)
$table->boolean('is_active')->default(true); // 真偽値
$table->integer('login_count')->default(0); // 整数
$table->date('birthday')->nullable(); // 日付
$table->timestamp('email_verified_at')->nullable(); // タイムスタンプ
$table->rememberToken(); // remember_tokenカラム追加(nullable string)
$table->timestamps(); // created_at / updated_at 自動生成
});
}
このマイグレーションを実行することで、users
テーブルが作成され、基本的なユーザー情報を扱えるようになります。
2. テーブルへのカラム追加
コマンド
php artisan make:migration add_profile_image_to_users_table --table=users
生成されるファイル名
database/migrations/2025_04_17_130000_add_profile_image_to_users_table.php
編集例
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedBigInteger('profile_image_id')->nullable()->after('profile');
});
}
補足:必要に応じて外部キー制約なども追加可能です。
3. マイグレーションの実行とロールバック
実行(すべてのマイグレーション適用)
php artisan migrate
直近1つ分のマイグレーションだけ取り消す
php artisan migrate:rollback --step=1
4. 複数のテーブル追加の例
複数のテーブルを追加する場合も、--create
オプションを使えば簡単です。
php artisan make:migration create_roles_table --create=roles
php artisan make:migration create_user_settings_table --create=user_settings
5. モデル補完を便利にするIDEヘルパー(オプション)
composer require --dev barryvdh/laravel-ide-helper
php artisan ide-helper:models --write
これでIDE(VSCodeなど)で $user->name
のような補完が効くようになり、開発が快適になります。
代表的なデータ型早見表(記述例)
Laravelの型 | 用途例 |
---|---|
$table->string('name') |
通常の文字列(255文字) |
$table->text('body') |
長文テキスト(TEXT) |
$table->boolean('flag') |
真偽値(true/false) |
$table->integer('count') |
整数(INT) |
$table->unsignedBigInteger() |
正のID参照用 |
$table->date('birthday') |
日付(DATE) |
$table->timestamp() |
タイムスタンプ(日時) |
$table->json('options') |
JSONデータ(MySQL5.7+) |
まとめ
操作 | コマンド例 |
---|---|
テーブル作成 | make:migration --create=users |
カラム追加 | make:migration --table=users |
実行 | php artisan migrate |
ロールバック | php artisan migrate:rollback --step=1 |
モデル補完 | php artisan ide-helper:models --write |
この内容をひと通り押さえておけば、Laravelでのマイグレーションは簡単かと思います。