【Laravel】マイグレーションのカラムの追加方法

Laravelのマイグレーション(Migration)についてどういうものなのか、備忘録として記録します。

【Laravel】マイグレーション(Migration)とは

マイグレーション(Migration)はLaravelに備わっているデータベースを管理する機能です。

運用環境が変更になった時に使用していたデータベースを新しい環境で最初から構築し直すのは大変です。その煩わしさを解消するために作られた機能がマイグレーションになります。

ちなみにMigrationとは日本語に訳すと「移住、移行、移動」という意味です。

マイグレーションにより簡単にデータベースの移行、移動ができるわけです。

【Laravel】マイグレーションは何をしているか

通常、データベースはSQLを使用して操作をしなければなりません。しかしそのような方法だと操作履歴が残らず、状態を確認するためには面倒な操作が必要となります。

そこでマイグレーションにより、データベースのテーブルやカラムを定義し、どのようなSQLをどのような順番で実行したかを管理します。

またマイグレーションはデータベースのバージョン管理も行います。

したがってマイグレーションは特定のデータベースに依存したりせずにLaravelがサポートする様々なデーターベースシステムを管理することができます。

【Laravel】マイグレーションでテーブルとカラムを追加する

Laravelではマイグレーションはスクリプトファイルを作成し、そこに必要事項を入力し実行することでテーブルやカラムの作成や変更を行うことができます。

今回はテーブルを作成しカラムを追加します。

操作手順

操作手順は以下のとおりです。

  1. テーブル作成用のスクリプトファイルを作成
  2. スクリプトファイルにカラムを入力し保存
  3. コマンドラインでスクリプトを実行

順番に見ていきましょう。

テーブル作成用のスクリプトファイルを作成

まずはコマンドラインでスクリプトファイルを作るためにコマンドを打ち込みます。

実行するコマンドはmake:migration Artisanコマンドです。

コマンドは開発中のプロジェクトのディレクトリに移動してから行います。

そして以下のコマンドを実行します。

php artisan make:migration create_todo_lists_table

これでcreate_todo_lists_tableのスクリプトファイルが作成されました。

このコマンドを実行した際に、Laravelは自動的にマイグレーションの名前からテーブル名と新しいテーブルを作成しようとしているかを推測しようとします。

そして名前からテーブル名を決定できる場合、Laravelは生成するマイグレーションファイルへ指定したテーブル名を事前に埋め込みます。

このスクリプトファイルはどこに作成されたかというと

プロジェクトディレクトリ/database/migrations

に置かれました。

ファイル名は「年_月_日_時間_create_todo_lists_table.php」

スクリプトファイルにカラムを入力し保存

続いてスクリプトファイルにカラムを入力しますが、その前に作成されたスクリプトファイルの内容を見ていきます。

作成されたスクリプトファイルの内容

作成されたスクリプトファイル

<?php

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

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

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

概要

  1. use宣言で使いたいクラスを宣言
  2. extendsでMigrationクラスを継承
  3. upメソッドとdownメソッドの2つのメソッドが用意されている
upメソッド

upメソッドはデータベースに新しいテーブル、カラム、またはインデックスを追加するために使用。

ここに作成したいカラムを記述することでマイグレーションが実行された時に列挙したカラムが自動で生成されます。

upメソッドには最初からidカラムとtimestampsカラムが記述されている。

downメソッド

downメソッドでは、upメソッドによって実行する操作を逆にし、以前の状態へ戻す。

upメソッドにカラムを追加

今回はデータベースに新しいカラムを追加したいためupメソッドにnameカラム入力します。

    public function up()
    {
        Schema::create('todo_lists', function (Blueprint $table) {
            $table->id();
            $table->string('name',100);
            $table->timestamps();
        });
追記方法
$table->データ型('カラム名');

このように書きます。データ型はカラムタイプとも呼び、公式リファレンスに一覧があります。

カラムタイプはメソッドが用意されているためふさわしいメソッドを選んで使います。今回はstringメソッドで、指定された長さの文字列を作成し、100文字以内を指定しています。

$table->string('name',100);

コマンドラインでスクリプトを実行

最後にaratisanコマンドでスクリプトを実行します。

php artisan migrate

これでマイグレーションによりデータベースに新しくテーブルを追加することができました。

 

まとめ

  • マイグレーションでデータベースを操作しないと操作履歴がわからずに厄介なことになるからマイグレーションで管理する
  • マイグレーションはスクリプトファイルに追加や削除を記述し、コマンドラインで実行する
  • カラムタイプはいろいろなメソッドが用意されているため、適当なメソッドを選び使用する
  • マイグレーションのスクリプトファイルを作成するのも実行するのもartisanコマンドを使う

コメント