アプリ担当の木村です。

最近laravelを触る機会があったので、そこで学んだことを
メモしていきます。

今回はマイグレーション手順です。

マイグレーションのファイル作成

`php artisan migrate:make`
コマンドでマイグレーションファイルが
app/database/migrations
に作成されます。

例えば
`php artisan migrate:make create_users_table`
の様にすると
`Created Migration: 2016_01_04_103448_create_users_table`
`Generating optimized class loader`
というメッセージが出力され
2016_01_04_103448_create_users_table
が先ほどのフォルダに作成されているかと思います。

テーブルの作成

作成されたマイグレーションファイルを見てみると

class CreateUsersTable extends Migration {

	/**
	 * Run the migrations.
	 *
	 * @return void
	 */
	public function up()
	{
		//
	}

	/**
	 * Reverse the migrations.
	 *
	 * @return void
	 */
	public function down()
	{
		//
	}

}

の様になっているかと思います。

up()にマイグレーションを実行した際の処理を
down()にup()の処理を取り消す処理を実装します。

テーブルを作成するソースはこんな感じになります。

class CreateUsersTable extends Migration {

/**
* Run the migrations.
*
* @return void
*/
    public function up()
    {
        Schema::connection('user_data')->create('users', function($table){
            $table->increments('id');

            $table->string('name', 32)->default("");

            $table->timestamps();
        });
    }

    /**
    * Reverse the migrations.
    *
    * @return void
    */
    public function down()
    {
        Schema::connection('user_data')->drop('users');
    }

}

簡単に解説すると、
`Schema::connection('user_data')->create('users', function($table)`
で、user_dataデータベースにusersというテーブルを作成しています。

`$table->increments('id');`
ではidというオートインクリメントされるカラムを作成しています。

`$table->string('name', 32)->default("");`
ではnameというstring型のカラムを作成しています。
32というのはstringのサイズで
default("")部分はデフォルトではカラムに空文字を入れる様に
指定しています。

`$table->timestamps();`
は、created_atとupdated_atというtimestamp型のカラムを作成します。
updated_atは更新された時間を
created_atは作成された時間を保持します。

down()内の
`Schema::connection('user_data')->drop('users');`
ではup()で作成したusersテーブルを削除しています

テーブルの更新

マイグレーションではテーブルの作成だけでなく更新をするときもあるかと思います。
更新方法も簡単にまとめます。
基本的には作成と同じで
`php artisan migrate:make add_column_age_to_users_table`
で作成し、up()とdown()に処理を実装していきます。

今回はサンプルとして以下の様のコードを書きました。

public function up()
{
    Schema::connection('user_data')->table('users', function($table){
        $table->integer('age')->after('name')->default(0);
    });

}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
    Schema::connection('user_data')->table('users', function($table){
        $table->dropColumns('age');
    });
}

 

こちらも簡単に解説すると、

` Schema::connection('user_data')->table('users', function($table)`
で更新するテーブルを指定しています。
createと違い作成はしません。

`$table->integer('age')->after('name')->default(0);`
でageというint型のカラムを追加しています。
after('name')はnameというカラムの後ろに追加するという指定になります。

down()の
`$table->dropColumns('age');`
ではup()で追加したageというカラムを削除しています。

マイグレーションの実行とロールバック

といっても実行は簡単で、
`php artisan migrate`
で実行できます。
またロールバックも
`php artisan migrate:rollback`
でできます。とても容易ですね。

今回は以上です。
サーバーサイドの方からすると当たり前のことなのかもしれませんが、
普段クライアントサイドメインの自分にとっては
色々と新鮮で面白いです。

お見積いたします。どんなことでも、お気軽にご相談ください。

お客様のご要望とご予算に応じて最適なソリューションをご提案いたします。
VRの開発やアプリ開発以外でも、ぜひ一度ご相談ください。