Laravelのマイグレーション構文まとめ!table・column・indexをやさしく解説
生徒
「Laravelでデータベースのテーブルを作るとき、どんな書き方をするんですか?」
先生
「Laravelでは『マイグレーション』という仕組みを使って、データベースの構造をコードで管理できるんです。」
生徒
「マイグレーションって難しそうですね…どんな構文を覚えればいいんですか?」
先生
「大丈夫。基本の構文を覚えれば誰でもできます。今日は『table』『column』『index』の3つを中心に解説しますね!」
1. マイグレーションとは?
マイグレーション(Migration)とは、Laravelでデータベースのテーブル構造をコードで定義・変更するための仕組みです。普通はSQL(エスキューエル)というデータベース専用の言語で操作しますが、LaravelではPHPコードだけで同じことができます。
たとえば、テーブルを作る命令をマイグレーションに書いておけば、他の開発者も同じ構造を簡単に再現できます。つまり、「データベースの設計図」をプログラムで管理するイメージです。
2. マイグレーションファイルを作る方法
マイグレーションファイルは、ターミナル(黒い画面)で下記のコマンドを実行して作成します。
php artisan make:migration create_users_table
このコマンドを実行すると、database/migrations フォルダに新しいファイルが作成されます。ファイル名には作成日時が付き、どの順番で作られたかもわかるようになっています。
3. table構文(テーブル定義)
マイグレーションの中では、Schema::create() を使ってテーブルを作成します。Schema(スキーマ)は、Laravelが提供するデータベース構造を扱うクラスです。
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
public function up(): void {
Schema::create('users', function (Blueprint $table) {
$table->id(); // 主キー
$table->string('name'); // 名前カラム
$table->string('email')->unique(); // メールアドレス(重複不可)
$table->timestamps(); // created_atとupdated_at
});
}
public function down(): void {
Schema::dropIfExists('users');
}
};
このようにBlueprintクラスを使って、テーブルやカラム(列)を柔軟に定義できます。
4. column構文(カラム定義)
カラムとは、テーブルの「列」のことです。ユーザー情報であれば「名前」「メールアドレス」「年齢」などがカラムになります。
Laravelではさまざまな型のカラムを定義できます。代表的なものを一覧で見てみましょう。
$table->string('name');:文字列を保存するカラム$table->integer('age');:整数値(数)を保存$table->boolean('is_active');:真偽値(true/false)を保存$table->date('birthday');:日付を保存$table->text('profile');:長文のテキストを保存
たとえば、ユーザーのプロフィール情報を管理するテーブルを作る例は次のようになります。
Schema::create('profiles', function (Blueprint $table) {
$table->id();
$table->string('nickname', 50);
$table->text('bio')->nullable(); // nullを許可
$table->integer('age')->default(0); // 初期値を設定
$table->timestamps();
});
5. index構文(インデックスの設定)
インデックス(index)とは、データ検索を高速化するための仕組みです。たとえばユーザーのメールアドレスで検索する場合、インデックスを付けると検索がスピードアップします。
Laravelでは次のように簡単にインデックスを追加できます。
$table->index('email'); // 通常のインデックス
$table->unique('email'); // 一意制約付きインデックス
$table->primary('id'); // 主キー(通常はidに自動付与される)
これらを組み合わせて、検索や重複チェックが効率的に行えるテーブルを設計できます。
6. テーブルの変更と削除
既にあるテーブルにカラムを追加したいときは、Schema::table()を使います。
Schema::table('users', function (Blueprint $table) {
$table->string('phone')->nullable();
});
逆に、テーブルやカラムを削除したいときは以下のように書きます。
Schema::dropIfExists('profiles'); // テーブル削除
$table->dropColumn('phone'); // カラム削除
7. マイグレーションの実行と取り消し
定義したマイグレーションを実際に反映するには、次のコマンドを実行します。
php artisan migrate
もし間違えた場合ややり直したい場合は、下記のコマンドで取り消せます。
php artisan migrate:rollback
これにより、テーブルを安全に管理しながらデータベース構造を進化させることができます。
8. よく使うマイグレーション構文まとめ
Laravelで頻繁に使うマイグレーション構文をまとめると、次のようになります。
Schema::create():テーブルを作成Schema::table():既存テーブルを変更Schema::dropIfExists():テーブル削除$table->string():文字列型カラム$table->integer():数値型カラム$table->timestamps():日時カラム(自動)$table->unique():一意制約インデックス$table->nullable():NULLを許可$table->default():初期値設定
これらを理解しておくと、Laravelでのデータベース設計がぐっと楽になります。