Laravel マイグレーション(migration)の基本

2020年1月17日

PHP

マイグレーションの機能でテーブルの作成、編集をおこないます。

 

まずマイグレーションの機能でテーブルを作成します。なおあらかじめMySQLに接続しデータベースを用意して下さい。

 

MySQLと接続し一覧表示

 

 

マイグレーションファイルを作成します。

「create_○○○_table」は生成されるマイグレーションファイル名の一部となりますが、○○○の部分には作成するテーブル名を指定します。下記のように–createオプションにテーブル名を指定しても同じです。

 

 

database/migrations/ディレクトリ以下にタイムスタンプ付きのファイルが生成されるので編集します。ハイライト部分が追記部分です。

 

なおすでにデフォルトで2つのマイグレーションファイルが生成されています。

・2014_10_12_000000_create_users_table.php

・2014_10_12_100000_create_password_resets_table.php

 

2020_01_16_005247_create_books_table.php

up()にはマイグレーション実行時の処理を記述します。またdown()には後に説明しますが、ロールバック実行時の処理、基本的にup()と逆の処理を記述します。create_○○○_tableおよび–createオプションでマイグレーションファイルを作成した場合は、すでにテーブルを削除する処理が記述されています。

 

 

マイグレーションを実行します。

 

完了するとbooksテーブルが生成されているのが確認できます。

 

 

 

テーブルの変更


 

カラムの追加や編集をする場合は、上記で作成したマイグレーションファイルを編集し、refreshを付けて再度マイグレーションを実行します。

 

例えばpublisherカラムを追加

 

refreshを付加してマイグレーション実行

migrate:refreshは、migrate:resetしてmigrateするのと同じ。

 

 

テーブルを変更した過程自体を記録として残しておきたい場合があります。その場合は、–tableオプションに変更するテーブル名を指定し、新たにマイグレーションファイルを作成します。

 

生成されたファイルを下記のように編集し(ハイライト部分)、再度マイグレーションを実行します。

 

2020_01_16_044109_update_books_table.php

16行目

–tableオプションを付けてマイグレーションファイルを作成した場合、Schema::tableとなっていることが確認できます。

 

29行目

down()にはロールバック時の処理を記述しておきます。up()ですなわちマイグレーション実行時にpublisherカラムを追加するので、ロールバック時には基本的にその逆、publisherカラムを削除する処理を記述しています。

 

関連ページ

マイグレーション時のカラム変更のエラー

 

 

ロールバック・リセット


 

上述でも少し説明しましたが、ロールバックやリセットでマイグレーションの処理を戻すことができます。より正確に言えばマイグレーションファイルのdown()に記述された処理を実行していきます。

 

resetでは、存在するすべてのマイグレーションファイルのdown()が実行されます。

 

rollbackでは、直近にまとめて実行したマイグレーションファイルのdown()がすべて実行されます。

 

–stepを付加すると逆上るマイグレーションファイル数を指定できます。例えば下記では最新から1つ目までのマイグレーションファイルのdown()のみが実行されます。

 

refreshでは、一旦存在するすべてのマイグレーションファイルのdown()が実行され(reset)、再度migrateされます。

 

 

参照ページ・書籍


 

Laravel 6.x データベース:マイグレーション

 

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応

 

 

 

LINEで送る
Pocket

定番本
定期本
 
Copyright © 2020 思考の葉 All Rights Reserved.  プライバシーポリシー