マイグレーション作成


今回やること

マイグレーション機能(データベースのバージョン管理)を使用して、phpMyAdminに作ったデータベース(mommy_book)にテーブルを作成する!

ポイント

  • migrationファイルの内容の中には、テーブルを作成する処理が含まれている 

    • up(): テーブル作成(バージョンアップ処理)
    • down(): テーブル削除(ロールバック処理)
  • Laravelにはプロジェクト作成段階でユーザ認証が組み込まれてるようになっている

    • ユーザ用のテーブルパスワード再確認用テーブルを作成するmigrationファイルがデフォルトでdatabase/migrationの直下に保存されている  

今回のMommy_bookアプリでは、デフォルトのユーザ用migrationファイル(Usersテーブル用)に加えて、Babiesテーブル、Vaccinesテーブル、Baby_checkupsテーブル、Baby_teethテーブル、Matanity_checkupsテーブル、Albumsテーブルを作るため6つのmigrationファイルを作成する。

流れ

  1. migrationファイルを作成
  2. テーブル定義書をもとにmigrationファイルを編集
  3. migrationを実行
  4. phpMyAdminのデータベースにテーブルが作成されているかを確認

ここでは、①デフォルトでテーブルを作る場合(Usersテーブル)②自分でmigrationファイルを作る場合(ex. Babiesテーブル)の作成を説明します

①デフォルトでテーブルを作る場合(Usersテーブル)

1.migrationファイルは既にあるので、database/migrationの直下のcreate_users_table.phpを開く
[デフォルトではup()は以下の通り、down()はデフォルトのままなので省略]

 public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

2.テーブル定義書をもとにmigrationファイルを編集

3.migrationを実行 (コマンドで)

php artisan migrate

4.phpMyAdminで確認

☆データベースにテーブルが作成できているので成功☆

②自分でmigrationファイルを作る場合(ex. Babiesテーブル)

  1. migrationファイルを作成

コマンドで、以下の通り(-createオプション:テーブル名は複数形で)

php artisan make:migration create_babies_table --create=babies

database/migrationで作成したcreate_babies_table.phpを開く
[デフォルトではup()は以下の通り、down()はデフォルトのままなので省略]

  public function up()
    {
        Schema::create('tweets', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }
  1. テーブル定義書をもとにmigrationファイルを編集

  2. migrationを実行

php artisan migrate
  1. phpMyAdminのデータベースにテーブルが作成されているかを確認

☆データベースにテーブルが作成できているので成功☆

カラム設定で出てきたもの

ベースとなる書き方
型がintegerのときは、引数を取ることできないので注意!!!!

 Schema::create('テーブル名', function (Blueprint $table) {
$table->カラムの型('カラム名', 引数)
}

nullのとき⇩

$table->カラムの型('カラム名', 引数)->nullable();

メールアドレスなど値の重複を防ぎたいとき⇩

$table->カラムの型('カラム名', 引数)->unique();

外部キー⇩

$table->foreign('外部キー名')->references('外部キーに対応する主キー名')->on('選択した主キーのテーブル名');
}   

timestamps()
有効(全体)桁数指定で、NULL値可能なcreated_atとupdated_atカラムを追加する
NULLが指定された場合は、デフォルト値が入る

まとめ

以下の手順を繰り返す!!
1. migrationファイルを作成
2. テーブル定義書をもとにmigrationファイルを編集
3. migrationを実行
4. phpMyAdminのデータベースにテーブルが作成されているかを確認