まずはここまでお疲れさまでした!
ここからは後半のパートとなりますが、長かった環境構築の旅を終え、いよいよ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しましょう。