Laravel入門 Lesson 8 - Scheme Builder(Migration)

More than 5 years have passed since last update.


Scheme Builder(Migration)

Lesson 7から続くので、前回のLessonを聞く余裕がない人は次のようにする。

DBは初期化されるので、設定がいらない。

Lesson 7までのコードはここにある。


http://fluke8259.hatenablog.com/entry/2014/04/03/174129


Intro

今回はScheme Builderを使ってみる。

まず、SchemeはDatabaseの構造を表す。

つまり、Databaseの設計図みたいなものである。

正直にSQL queryでDatabaseのいろんなTableを作ることと同じであるが、

Migration(サーバの移転など)のときScheme builderの素晴らしさが発揮される。

なぜなら、Web serverと、Database serverは独立されているので、

Project directoryを他のサーバに移したり、Githubで共有したりするとき、

Database serverの設定を別途として送らなきゃならない。

もしかして、QueryのSchemeが現在Projectと違ってErrorが出てきたら、Debuging地獄になると思う。

しかし、Scheme builderを使うと、Scheme情報がMigration Fileとして保存されるので、

DBのSchemeもすぐ適用ができる。

では、早速始める。


Step 0.

以前のLessonで利用したTableをScheme builderで作るつもりなので、削除する。

DROP TABLE mylaravel.posts


Step 1. php artisan migrate:make

では、実際にScheme builderを作ってみる。

まず、ArtisanがScheme builderのTemplateを提供しているので、このLessonではartisanを使って作ってみる。

Project directoryをTerminalで開いて次の命令をする

bash

php artisan migrate:make create_posts_table --table="posts"

php artisan migrate:make

ArtisanではSchemebuilder関連の機能をmigrationCommandで管理する。

makeという命令で、Migration fileを作って、次にくるcrate_posts_tableはMigration Fileの名前である。

最後の--tableOptionはTableの名前を入れるとき使う。


Step 2. Migration Fileを設定する。

Step 1.で作られたMigration Fileはapp/database/migrationsに保存されている。

Fileの名前を見ると私は2014_04_03_162357_create_posts_table.phpという名前になっている。


名前の前はMigrationが作られた日付が入っている。

これを使ってMigrationがいつ作られたのかがすぐわかる。


では、これを修正してみる。


app/database/migrations

<?php

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

class CreatePostsTable extends Migration {

/**
* Run the migrations.
*
* @return void
*/

public function up()
{
Schema::create('posts', function(Blueprint $table)
{
$table->increments('id');
$table->string('title');
$table->text('body');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/

public function down()
{
Schema::drop('posts');
}

}

修正した部分はpublic function up()public function down()を中身だけである。

upの場合、今回のMigrationが適用されたとき行われる行動で、downの場合、Migrationがrollbackされたとき行う内容が書かれる。


なので、down()up()に書かれている内容はお互いに完全に逆である。

これだけは必ず注意する。



Step 3. php artisan migrate

作ったMigration fileを適用することもArtisanを使って行う。

bash

php artisan migrate

php artisan migrate

これで終わりである。


(追加) migrateする前に戻したいとき

Migrationを戻すときは二つのやり方がある。

bash

php artisan migrate:rollback





bash

php artisan migrate:reset



rollbackの場合は最後に適用されたMigrationだけ戻して、


resetの場合はすべてのMigrationを戻してくれる。

今回はMigrationを一回だけ適用したので、両方とも使える。


今回のSchemeは次回も使うつもりなので、戻したらphp artisan migrateで再び適用しておくこと。