最近laravelを触る機会があったので、そこで学んだことを
メモしていきます。
今回はマイグレーション手順です。
こちらの記事は4.系のコマンドになります。
マイグレーションのファイル作成
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
でできます。とても容易ですね。
今回は以上です。
サーバーサイドの方からすると当たり前のことなのかもしれませんが、
普段クライアントサイドメインの自分にとっては
色々と新鮮で面白いです。