マイグレーション(更新作業)

2019/08/14

Laravelではマイグレーション機能がついています。

基本的にDBはマイグレーションで構築します。

前回はマイグレーションで新規テーブルを作成しました。

今回はそのテーブルに変更をかける処理についてエントリーします。

 

前提条件

Laravel5.2ではマイグレーションでテーブルの更新作業するには "doctrine/dbal" パッケージが必要です。

ポイント

doctrine/dbal が入ってなかったら、例えばカラムのデータ型を変更したときなどエラーになります。

パッケージは composer 経由で入れます。composer の使い方は以下をご参考ください。


$ composer require doctrine/dbal:2.*

パッケージを入れるとカラムの変更が可能になります。

データ型を変更して再度、マイグレーションを実行してみました。

 

演習

前回作成した「従業員」テーブル(employees)に「メールアドレス」のカラムを追加します。

 

手順

1)マイグレーションファイルの作成
2)マイグレーションファイルの編集
3)マイグレーションファイルの実行
4)動作確認

 

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


# オプションをつけて雛形を作成しています。
$ php artisan make:migration update_employees_table --table=employees

ポイント

マイグレーションファイル名はわかりやすい名前にしましょう。
「add_mail_to_employees_table」でもわかりやすくてOK。

間違えた場合は?

テーブル名を間違えたり、オプションで雛型を作成するのを忘れた場合
1.自動生成されたマイグレーションファイルを削除
2.composer dump-autoload
3.もう一度作成

 

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


public function up()
{
  Schema::table('employees', function (Blueprint $table){
  // emailカラムを追加
  $table->string('email')->comment('メールアドレス');
  });
}

public function down()
{
    Schema::table('employees', function (Blueprint $table) {
      $table->dropColumn('email');
    });
}

データベースのカラムの設定のやり方は以下のページでまとめました。

ポイント

php artisan migrate:rollback を実行すると down() で記述した内容が実行されます。down() に何も記述しなくてもマイグレーションファイルは実行できますが、rollback してもカラムが消えないようになります。

 

3)マイグレーションファイルの実行

先ほど編集したマイグレーションファイル(xxxx_xx_xx_update_employees_table.php)を実行させます。


$ php artisan migrate

 

4)動作確認

「email」のカラムが追加されているか確認します。


desc employees;

マイグレーションによるテーブルの更新作業は以上になります。

 
Laravelのマイグレーションについてもっと理解を深めたい方は PHPフレームワーク Laravel入門 をお勧めします。

ポイント
マイグレーション関連の掲載ページ

Chapter 5 データベースの利用
5.1 データベースを準備する
5.2 DBクラスの利用
5.3 クエリビルダ
5.4 マイグレーションとシーディング

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-基礎知識