アプリ担当の木村です。
最近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`
でできます。とても容易ですね。
今回は以上です。
サーバーサイドの方からすると当たり前のことなのかもしれませんが、
普段クライアントサイドメインの自分にとっては
色々と新鮮で面白いです。
 
						