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

2021/04/19

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」「add_columns_to_employees_」でもわかりやすくて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;

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

 

PHPフレームワーク Laravel入門 第2版

僕がはじめてLaravelを学習するために参考にしたサイトは、掌田津耶乃(しょうだつやの)さんの libro というサイトです。当時(2016年)、Laravel学習サイトの中でもこのサイトは群を抜いてわかりやすく説明されていたので、とても勉強になったのを覚えています。この本は掌田津耶乃さんが書いた本なので、わかりやすく解説されているだろうと kindle で購入しました。2020年8月の時点でいうと日本国内にて唯一の Laravel の良書と言っても良いかと思います。口コミでもLaravel本のロングセラー定番解説書として認知されています。当サイトではチュートリアル形式でLaravelを解説しているので、初心者の方はこの本とセットで学習されるといいと思います。しかし、かなりわかりやすく解説されているとはいえ、PHP中級者以上のスキルは必要です。PHP自体の知識が乏しい方は 独習PHP 第3版 をあわせて購入することをお勧めします。

Amazonで詳細を見る

オススメ

 

本庄マサノリ

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

>> Twitter をフォローする

 

-基礎知識