Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Laravel】Migration(マイグレーション)ファイル作成!DBテーブルとその履歴を作成します!

PHPバージョン:7.1.14
Laravelバージョン:5.7.9

本日はMigration(マイグレーション)についてです!
migration自体の意味は「移行」や「移転」などですが、
Laravel的にはデータベースの構築やバージョン管理を行う機能です!

コンソールから直接MySQLに入らなくても
テーブルを作成したりテーブルのカラム内容を変更したりできます!

また、どのタイミングでどのような変更を行ったか履歴が記録されます!
テーブルの状態を過去に巻き戻したりもできます!


Migrationファイルの作成

それではまずはartisanコマンドでMigrationファイルを作成しましょう。
ファイル名は"年_月_日_乱数_指定した名前"となります。

$ php artisan make:migration create_article_table
Created Migration: 2018_10_24_030135_create_articles_table

このコマンドで Migrationファイルが作成されます。
Migrationファイルはdatabase>migrationsディレクトリに生成されています。

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

<?php

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

class CreateArticlesTable extends Migration
{
    public function up()
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->increments('id');
// ********** 開始 **********
            $table->string('title');
// ********** 終了 **********
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('articles');
    }
}

database>migrations>xxxx_xx_xx_xxxxxx_create_articles_table.php

クラス名は Migrationファイル名から自動的に決められます。
今回はcreate_articles_tableという名前で作成したので
CreateArticlesTableというクラス名となりました。
このクラスはMigrationクラスを継承しています。

メソッドはデフォルトで、
upメソッドとdownメソッドとあります。
テーブルを作成する時はupメソッドを、
作成したテーブルを破棄する(巻き戻す)時はdownメソッドが呼び出されます。

upメソッド

まずはupメソッドの説明から!
Schemaは「図式」という意味で、
データベースの構成を作成・更新・削除するためのクラスとなります。
Schema::create(テーブル名, 処理);
という形でテーブルを作成(create)します。

SchemaはLaravelのファサード(Facade)という機能のひとつです。
newしないで、静的クラスのように使われていますね。
FacadeはLaravelの便利機能をバックグラウンドを気にすることなく、
静的クラスのように使うことが出来ます。
Facadeを使う場合はスクリプト上部でuseしておく必要があります。
またFacadeはconfig>app.phpの'alieses'配列に一覧でまとめられています。

第2引数の処理部分の記述は、無名関数となっております。
無名関数の引数ではBlueprint(訳すると「設計図」)オブジェクトが使われています。
Blueprintオブジェクトのメソッドを呼びだしてカラムを作成していきます。
$table->string('title');
を追記しました。
titleというstring型カラムが追加された状態でDBテーブルが作成されます。

downメソッド

続いてdownメソッドです!
ロールバックした時やテーブルを削除した時などに実行されます!

Schema::dropIfExists('テーブル名');
で、テーブルをdrop(削除)します。
その名前の通り、テーブルが存在していた場合のみ実行されます。

次回は作成したマイグレーションファイルを実行して、
実際にデータベースにテーブルが作成されることを確認したいと思います!

今回はここまでです、ありがとうございました〜