カテゴリ: Laravel 更新日: 2025/11/13

Laravelのマイグレーション構文まとめ!table・column・indexをやさしく解説

Laravelのマイグレーション構文まとめ(table, column, indexなど)
Laravelのマイグレーション構文まとめ(table, column, indexなど)

先生と生徒の会話形式で理解しよう

生徒

「Laravelでデータベースのテーブルを作るとき、どんな書き方をするんですか?」

先生

「Laravelでは『マイグレーション』という仕組みを使って、データベースの構造をコードで管理できるんです。」

生徒

「マイグレーションって難しそうですね…どんな構文を覚えればいいんですか?」

先生

「大丈夫。基本の構文を覚えれば誰でもできます。今日は『table』『column』『index』の3つを中心に解説しますね!」

1. マイグレーションとは?

1. マイグレーションとは?
1. マイグレーションとは?

マイグレーション(Migration)とは、Laravelでデータベースのテーブル構造をコードで定義・変更するための仕組みです。普通はSQL(エスキューエル)というデータベース専用の言語で操作しますが、LaravelではPHPコードだけで同じことができます。

たとえば、テーブルを作る命令をマイグレーションに書いておけば、他の開発者も同じ構造を簡単に再現できます。つまり、「データベースの設計図」をプログラムで管理するイメージです。

2. マイグレーションファイルを作る方法

2. マイグレーションファイルを作る方法
2. マイグレーションファイルを作る方法

マイグレーションファイルは、ターミナル(黒い画面)で下記のコマンドを実行して作成します。


php artisan make:migration create_users_table

このコマンドを実行すると、database/migrations フォルダに新しいファイルが作成されます。ファイル名には作成日時が付き、どの順番で作られたかもわかるようになっています。

3. table構文(テーブル定義)

3. table構文(テーブル定義)
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構文(カラム定義)

4. column構文(カラム定義)
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構文(インデックスの設定)

5. index構文(インデックスの設定)
5. index構文(インデックスの設定)

インデックス(index)とは、データ検索を高速化するための仕組みです。たとえばユーザーのメールアドレスで検索する場合、インデックスを付けると検索がスピードアップします。

Laravelでは次のように簡単にインデックスを追加できます。


$table->index('email'); // 通常のインデックス
$table->unique('email'); // 一意制約付きインデックス
$table->primary('id'); // 主キー(通常はidに自動付与される)

これらを組み合わせて、検索や重複チェックが効率的に行えるテーブルを設計できます。

6. テーブルの変更と削除

6. テーブルの変更と削除
6. テーブルの変更と削除

既にあるテーブルにカラムを追加したいときは、Schema::table()を使います。


Schema::table('users', function (Blueprint $table) {
    $table->string('phone')->nullable();
});

逆に、テーブルやカラムを削除したいときは以下のように書きます。


Schema::dropIfExists('profiles'); // テーブル削除
$table->dropColumn('phone'); // カラム削除

7. マイグレーションの実行と取り消し

7. マイグレーションの実行と取り消し
7. マイグレーションの実行と取り消し

定義したマイグレーションを実際に反映するには、次のコマンドを実行します。


php artisan migrate

もし間違えた場合ややり直したい場合は、下記のコマンドで取り消せます。


php artisan migrate:rollback

これにより、テーブルを安全に管理しながらデータベース構造を進化させることができます。

8. よく使うマイグレーション構文まとめ

8. よく使うマイグレーション構文まとめ
8. よく使うマイグレーション構文まとめ

Laravelで頻繁に使うマイグレーション構文をまとめると、次のようになります。

  • Schema::create():テーブルを作成
  • Schema::table():既存テーブルを変更
  • Schema::dropIfExists():テーブル削除
  • $table->string():文字列型カラム
  • $table->integer():数値型カラム
  • $table->timestamps():日時カラム(自動)
  • $table->unique():一意制約インデックス
  • $table->nullable():NULLを許可
  • $table->default():初期値設定

これらを理解しておくと、Laravelでのデータベース設計がぐっと楽になります。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)