FuelPHPをやってみる (5) - Migrationを使う -
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が作成される。