FuelPHPをやってみる (5) - Migrationを使う -

2012-11-08T00:00:00+00:00 FuelPHP PHP

Railsにそういうのがありますが、FuelPHPでもそういうのがある模様

Migrationを作る

oil generate migration items
oil generate migration sales

fuel/app/migrationsにマイグレーションスクリプトが出力される

fuel/app/migrations/001_items.php

<?php

namespace Fuel\Migrations;

class Items {
    public function up() {
        // テーブル作成
        DBUtil::create_table(
            "items", // テーブル名
            array(
                "id" => array(
                    "constraint" => 11,
                    "type" => "int",
                    "auto_increment" => true
                ),
                "item_name" => array(
                    "constraint" => 50,
                    "type" => "varchar",
                    "null" => false
                ),
                "price" => array(
                    "constraint" => 11,
                    "type" => "int"
                ),
                "created_at" => array(
                    "type" => "timestamp",
                    "null" => false
                )
            ), // カラム定義
            array("id"), // プライマリーキー
            true, // IF NOT EXISTS
            "InnoDB" // ストレージエンジン
        );

        DBUtil::create_index(
            "items", // テーブル名
            "item_name", // カラム名
            "item_name_unique_index", // インデックス名
            "UNIQUE" // インデックスタイプ
        );
    }

    public function down() {
        DBUtil::drop_table("items");
    }
}

fuel/app/migrations/002_sales.php

<?php

namespace Fuel\Migrations;

class Sales {
    public function up() {
        DBUtil::create_table(
            "sales",
            array(
                "id" => array(
                    "constraint" => 11,
                    "type" => "int",
                    "auto_increment" => true
                ),
                "item_id" => array(
                    "constraint" => 11,
                    "type" => "int"
                )
            ),
            array("id"),
            true,
            "InnoDB",
            null,
            array(
                array(
                    "key" => "item_id",
                    "reference" => array(
                        "table" => "items",
                        "column" => "id"
                    )
                )
            ) // 外部キー定義
        );

        DBUtil::create_index(
            "sales",
            "item_id",
            "sales_item_id_index"
        );
    }

    public function down() {
        DBUtil::drop_table("sales");
    }
}

実行

oil refine migrate

やるとfuel/app/config/FUEL_ENV(デフォルトはdevelopment)/migration.phpが作成される。

FuelPHPをやってみる (7) - コントローラーテスト時の例外を無視してレスポンスを取る FuelPHPをやってみる (4) - Model_Crudでバリデーション -