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(削除)します。
その名前の通り、テーブルが存在していた場合のみ実行されます。
次回は作成したマイグレーションファイルを実行して、
実際にデータベースにテーブルが作成されることを確認したいと思います!
今回はここまでです、ありがとうございました〜