Laravelでmigrationを作る。

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

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

マイグレーション?

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

作ってみよう。

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

1
php artisan make:migration create_posting_table

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class CreatePostingTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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。
マイグレーションを実行するには、

1
php artisan migrate

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

ちなみに、

1
php artisan migrate:rollback

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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が遠い昔のことのように新鮮に感じられます( ̄ー ̄ )

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