Laravelでmigrationを作る。

安藤(プログラマー)
演劇もやっていまする。

最近、もろもろの諸事情で全くプログラミングを出来ていないので、復習も兼ねてブログに残します。。
初歩に立ち返り、マイグレーションの作成からやっていきます。

マイグレーション?

マイグレーションというのはデータベースのバージョンをコントロールするためのもので、チーム内でのDBの更新を簡単に共有できるようにしてくれるやつ。
(※上記は個人的な見解です。)

作ってみよう。

LaravelではArtisanコマンドを使います。

php artisan make:migration create_posting_table

と打ちますと、database/migrationsにマイグレーションファイルが作られているはずです。
しかし最初は、

class CreatePostingTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}

こんな骨組みだけが書いてあるだけで、中身がないですよね。
今回、僕は掲示板の記事投稿用のテーブルが作りたかったので、内容をこんな感じにしますー。

class CreatePostingTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posting', function (Blueprint $table) {
//オートインクリメントID
$table->increments('id');
//親記事の場合は0、子記事の場合は親記事のidを持つ
$table->string('target_id', 10)->default(0);
//投稿者名
$table->string('name', 10);
//投稿文章
$table->text('comment');
//メールアドレス
$table->string('mail_address', 256);
//パスワード
$table->string('password', 10);
//作成時のタイムスタンプ
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//テーブル削除用
Schema::dropIfExists('posting');
}
}

ってな具合です。
引数に入ってるのは、カラムタイプとそのサイズになります。
たとえば、
$table->string('target_id', 10)->default(0)
は、target_idという名前のstring型のカラムで、サイズは10
そしてデフォルト値が0で作成しています。

これで投稿記事用のマイグレーションの準備はOK。
マイグレーションを実行するには、

php artisan migrate

と打つだけ!簡単!!
さて、無事にテーブルが作成されましたかね??

ちなみに、

php artisan migrate:rollback

と打つだけで、ロールバックもできます。
めっちゃ簡単・・・。

ついでに画像や動画ファイル用のテーブル作成も作っちゃおう!

class CreateUploadFileTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('upload_file', function (Blueprint $table) {
$table->increments('id');
$table->string('target_id', 10);
$table->binary('file');
$table->string('mime', 20);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('upload_file');
}
}

これでバイナリファイル用のテーブルも完成。

とりあえず、今回はここまで。
ちょっとやってないだけなのにブランクがすごい。笑
Laravelが遠い昔のことのように新鮮に感じられます( ̄ー ̄ )

今月は、コツコツ復習ブログを上げていきますー。