PHP
Laravel

laravelでのマイグレーション作成手順

More than 1 year has passed since last update.

最近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

が先ほどのフォルダに作成されているかと思います。


テーブルの作成

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


2016_01_04_103448_create_users_table.php


class CreateUsersTable extends Migration {

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

public function up()
{
//
}

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

public function down()
{
//
}

}


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

up()にマイグレーションを実行した際の処理を

down()にup()の処理を取り消す処理を実装します。

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


2016_01_04_103448_create_users_table.php

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

でできます。とても容易ですね。

今回は以上です。

サーバーサイドの方からすると当たり前のことなのかもしれませんが、

普段クライアントサイドメインの自分にとっては

色々と新鮮で面白いです。