cakePHP(v3.x, phinx),migrationで新しいTableを追加する.

今回はBooksという新しいテーブルを手動で追加するMigrationを書いて行きたいと思います.

まずmigrationの雛形をbakeします.

$ bin/cake migrations createBooks

ここでxxx_CreateBooks.phpというファイルが作成されます.

Booksは以下のカラムを持つとするとき, * Title (‘varchar(32)’) * Author (‘varchar(32)’) * created (timestamp) * modified (timestamp)

xxx_CreateBooks.phpは以下のように書き換えることでMigrationが実装されます.

<?php

use Migrations\AbstractMigration;

class CreateBooks extends AbstractMigration
{
    public function up()
    {
        $this->table('books')
            ->addColumn(
                'title',
                'string',
                [
                    'limit' => 32,
                    'null' => false,
                    'comment' => '本のタイトル',
                ]
            )
            ->addColumn(
                'author',
                'string',
                [
                    'limit' => 32,
                    'null' => false,
                    'comment' => '本の著者',
                ]
            )
            ->addColumn(
                'created',
                'timestamp',
                [
                    'comment' => '生成日時',
                    'default' => 'CURRENT_TIMESTAMP',
                    'limit' => null,
                    'null' => true,
                ]
            )
            ->addColumn(
                'modified',
                'timestamp',
                [
                    'comment' => '変更日時',
                    'default' => 'CURRENT_TIMESTAMP',
                    'update' => 'CURRENT_TIMESTAMP',
                    'limit' => null,
                    'null' => true,
                ]
            )
            ->create();
    }

    public function down(){
        $this->table('books')->drop()->save();
    }
}

きちんとrollbackも動くようにdownも書きましょう.

あとは

$ bin/cake migrations migrates

でMigrationが完了します. このときidという名前のPrimary Keyが自動で作成されます.

Migrationを差し戻したいときは,

$ bin/cake migrations rollback

です.