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