📄

[Laravel基礎]"マイグレーション"って何ができるの?

3 min read

はじめに

つい先ほど”モデル”って何ができるの?の記事を書かせていただきました。

https://zenn.dev/maotouying/articles/9627078958be65

ほんなら次はマイグレーションだろってことで書きます。

そもそも"マイグレーション"って何?

マイグレーションとは本来データベースのバージョンコントロールみたいなものらしいです。
データベースにどういうテーブルをつくったのか〜だったり、どういうカラムを追加したのか〜とかいった改編記録を残して、いつでもその改変を戻せるようにしてくれるってやつですね。

まぁでもマイグレーションをするとファイルに書いた設計情報を元にテーブルが作れるので、私は「データベースにテーブル作る時にするやつ」って位の認識でいます。
LaravelはMySQLを直接いじらなくていいからとても便利。

マイグレーションを行う手順は以下の通りです。

1.マイグレーションファイルの作成
2.マイグレーションファイルの編集
3.マイグレーション実行

実際にやってみましょい。

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

まず、マイグレーションファイルを作成します。
マイグレーションファイルってのは「どんなテーブルを作るか」っていうテーブルの設計書ですね。
今回もusersというテーブルを作成することを前提に作成を進めます。
ファイルの作成には以下のコマンドを使います。

# 基本
# appディレクトリ直下にファイルが作成されます。
$ php artisan make:migration create_users_table

# 一緒にモデルも作る場合
$ php artisan make:model User --migration
$ php artisan make:model User -m

マイグレーションのファイル名はわかりやすい名前にしましょう。

  • 新規作成・・・create_テーブル名_table
  • 更新・・・add_テーブル名_to_table

"Created Migration: 2021_11_22_065454_create_images_table"という表示が出たらマイグレーションファイルの作成完了です。
database\migrationのフォルダを見ると2020_12_06_026015_create_users_table.phpみたいなファイルができているはず。

間違えた場合は?

私だけかな、マイグレーションの作成ってめちゃ間違う。ファイル名やら保存先やら。
そういう時は以下の手順で作り直しを行うといいそう。
1. 自動生成されたマイグレーションファイルを削除
2. composer dump-autoload
3. もう一度マイグレーションファイルを作成

2.マイグレーションファイルの編集

作ったマイグレーションファイルを開けると、中身はこんな感じ。

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateImagesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

up()とdown()の中に内容を書いていきます。

  • up()
    テーブルやカラムの定義を記述します。
  • down()
    ロールバック[1]処理を記述します。

今回はusersテーブルのカラムとして以下を定義してみましょう。

  • name
  • email
  • password

up()にカラム情報を定義します。

database\migration\2020_12_06_026015_create_users_table.php
:
public function up()
{
  Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
+   $table->string('name');
+   $table->string('email')->unique();
+   $table->string('password');
    $table->timestamps();
  });
}
:

カラムを定義する際の基本の書式はこれ。

$table->string('name');

カラムの名前とデータ型をセットで定義します。
この場合はnameという名前のカラムのデータ型を 「varchar」 設定しています。
varcharとは長さが変わる文字列を意味するデータ型です。

emailの後ろについてる"->unique()"についても補足しておきます。
これはユニークキーというもので、重複する値は保存できないけどnullは入れられるってやつです。
同じEmailで登録があったら困りますしね。

こんな感じでカラムの設定は色々あるので、別の記事でまた説明したいと思います。

3.マイグレーション実行

マイグレーションファイルで設計情報の定義ができたらそれをもとに実際にデータベースを作っていきます。
設計書を作ったらそれを実行しないとテーブルは作成されないんですね。
ターミナルで以下のコマンドを実行してみましょう。

$ php artisan migrate

これでデータベースにテーブルができて完成です。

まとめ

  • "マイグレーション"とはデータベースにテーブルを作る時に使う機能
  • マイグレーションファイルでテーブルの設計情報を定義する
  • マイグレーションを実行してテーブルを作成する

マイグレーションファイルはモデルと一緒に作成・実行する基本的な機能なので押さえておきたいですね。

では、また別の記事で。

*参考

脚注
  1. ロールバックとはシステム障害やデータの喪失、破損などが起きた際に、以前に正常に稼働していたある時点の状態に戻して復旧を試みることを指す。 ↩︎

Discussion

ログインするとコメントできます