Laravelでmigrationを作る。

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

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

マイグレーション?

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

作ってみよう。

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

php artisan make:migration create_posting_table

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

class CreatePostingTable extends Migration
{
/** </div></div>
* Run the migrations.
*
* @return void
*/</span>
public function up()
{
//
}
/** </div></div>
* Reverse the migrations.
*
* @return void
*/</span>
public function down()
{
//
}
}
</pre></div></figure> こんな骨組みだけが書いてあるだけで、中身がないですよね。 今回、僕は掲示板の記事投稿用のテーブルが作りたかったので、内容をこんな感じにしますー。
class CreatePostingTable extends Migration
{
/** </div></div>
* Run the migrations.
*
* @return void
*/</span>
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();
});
}
/** </div></div>
* Reverse the migrations.
*
* @return void
*/</span>
public function down()
{
//テーブル削除用
Schema::dropIfExists('posting');
}
}
</pre></div></figure> ってな具合です。 引数に入ってるのは、カラムタイプとそのサイズになります。 たとえば、 `$table->string('target_id', 10)->default(0)` は、`target_id`という名前のstring型のカラムで、サイズは`10`。 そしてデフォルト値が`0`で作成しています。 これで投稿記事用のマイグレーションの準備はOK。 マイグレーションを実行するには、
php artisan migrate
と打つだけ!簡単!! さて、無事にテーブルが作成されましたかね?? ちなみに、
php artisan migrate:rollback
と打つだけで、ロールバックもできます。 めっちゃ簡単・・・。 ついでに画像や動画ファイル用のテーブル作成も作っちゃおう!
class CreateUploadFileTable extends Migration
{
/** </div></div>
* Run the migrations.
*
* @return void
*/</span>
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();
});
}
/** </div></div>
* Reverse the migrations.
*
* @return void
*/</span>
public function down()
{
Schema::dropIfExists('upload_file');
}
}
</pre></div></figure> これでバイナリファイル用のテーブルも完成。 とりあえず、今回はここまで。 ちょっとやってないだけなのにブランクがすごい。笑 Laravelが遠い昔のことのように新鮮に感じられます( ̄ー ̄ ) 今月は、コツコツ復習ブログを上げていきますー。