現在Laravelの教材を鋭意制作中です!完成まで今しばらくお待ちください

#15 テーブルの作成とテーブル定義、マイグレート

まずはここまでお疲れさまでした!

ここからは後半のパートとなりますが、長かった環境構築の旅を終え、いよいよLaravelのアプリケーション開発の第一歩へと進みます。

実際に「お問い合わせフォーム」という機能を作るため、コードに触れながらLaravelの基本原則を体験していきます。

この章では、フォームに入力された情報を保存するためのデータベーステーブルの作成に取り組みます。

Laravelでは、テーブルの設計はマイグレーション機能を使って管理され、コード上からデータベース構造を定義・反映させることが可能です。

まずは、どんな項目(名前・メールアドレス・メッセージなど)を保存するかを設計するところから始め、「フォームの投稿内容がどこに保存され、どんな構造で記録されるか?」を意識しつつ、Laravelのデータ処理の起点を理解する重要なステップとなります。

1.ブランチの作成

まずはマイグレーションファイルを作成する前に、ブランチを作成しましょう。

mainブランチのままGitを操作することは、基本的に禁止されている企業がほとんどですので、今回のような個人開発の場合でも、同様にブランチを作成します。

作成するブランチ名は自由に決めてもらって構いませんが、私は以下のように設定しました。

git switch -C make-migration

2.マイグレーションファイルの作成

まずは Laravel で「お問い合わせフォームの保存先」となる contacts テーブル をマイグレーションを使って作成していきます。

php artisan make:migration create_contacts_table

このコマンドで database/migrations に新しいファイルが生成されます。

ファイル名は 20XX_XX_XX_XXXXXX_create_contacts_table.php のようになります。

3.テーブル構造の定義

続いてテーブルの構造を定義していきます。以前作成したREADMEに構造を記述したことを覚えていますか?

今回はこの「README」で作成したテーブルを元に作成していきます。

カラム名 PRIMARY KEY UNIQUE KEY NOT NULL FOREIGN KEY
id bigint
name string
email string
age integer
gender string
interests text
message text
created_at timestamp
updated_at timestamp

up()メソッド

テーブル構造の定義は、先ほど作成したマイグレーションファイルのup()部分に記載していきます。

public function up(): void
{
  Schema::create('contacts', function (Blueprint $table) {
    $table->id(); // 主キー: 自動採番
    $table->string('name'); // 名前(必須)
    $table->string('email')->unique(); // メールアドレス(一意性あり・必須)
    $table->integer('age'); // 年齢(必須)
    $table->string('gender'); // 性別(必須)
    $table->text('interests')->nullable(); // 興味(任意入力)
    $table->text('message'); // 問い合わせ内容(必須)
    $table->timestamps(); // 作成日時・更新日時
  });
}

各カラムのポイント

カラム名 内容
id 自動インクリメントの主キー(検索用・識別用)
name ユーザー名(バリデーション対象)
email メールアドレス。一意性保証によって重複防止
age 数値型の年齢(バリデーションで範囲指定する想定)
gender 性別(ラジオボタンなどで選択)
interests 興味。複数選択時にテキストで保存(JSONなども後述可)
message 問い合わせ本文。必須フィールド
timestamps 自動追加の日時。created_at / updated_at

down()メソッド

生成直後の down() メソッドには、以下のようにテーブル削除のコードが自動で入っています。

public function down(): void
{
  Schema::dropIfExists('contacts');
}

このコードは 「マイグレーションのロールバック(元に戻す処理)」に備えて、dropIfExists() を初期状態で用意してくれています。

4.マイグレーションファイルの実行

それでは仕上げとして、定義したマイグレーションファイルを 実際に実行してデータベースにテーブルを反映させるステップに進みましょう。

マイグレーションの実行コマンドは以下の通りです。

php artisan migrate

このコマンドをターミナルから実行することで、database/migrations ディレクトリ内の全マイグレーションが順に処理され、対象のデータベースにテーブルが作成されます。

実際にデータベースが作成されたかどうかは、Dockerのphpmyadminから確認することが可能です。

補足:失敗した場合の対処法

php artisan migrate:rollback

このコマンドを使えば、最新のマイグレーションをキャンセルできます。修正したマイグレーションを再実行する際に便利です。

5.Git push

以上が完了したら、ここでGitを共有しておきましょう。

git add -A
git commit -m "コメントを入力する"
git push origin make-migration

git pushが無事完了したら、GitHub上で操作を行います。

pull requestが来ているので、mergeしましょう。

次章:#16 モデルの作成と解説 に進む