Standing on the Shoulder of Linus

Home / 2012 / 6月 / 16 / パーフェクトPHPミニブログ用のFuelPHPマイグレーション

パーフェクトPHPミニブログ用のFuelPHPマイグレーション

パーフェクトPHPミニブログのSQLを、FuelPHPマイグレーションで実装してみました。

ミニブログのソースコードは、技術評論社のサイトからダウンロードしてください。

目的の SQL コードは下記です。(MIT License : Copyright (c) 2010 Katshuhiro Ogawa)

CREATE TABLE user(
    id INTEGER AUTO_INCREMENT,
    user_name VARCHAR(20) NOT NULL,
    password VARCHAR(40) NOT NULL,
    created_at DATETIME,
    PRIMARY KEY(id),
    UNIQUE KEY user_name_index(user_name)
) ENGINE = INNODB;

CREATE TABLE following(
    user_id INTEGER,
    following_id INTEGER,
    PRIMARY KEY(user_id, following_id)
) ENGINE = INNODB;

CREATE TABLE status(
    id INTEGER AUTO_INCREMENT,
    user_id INTEGER NOT NULL,
    body VARCHAR(255),
    created_at DATETIME,
    PRIMARY KEY(id),
    INDEX user_id_index(user_id)
) ENGINE = INNODB;

ALTER TABLE following ADD FOREIGN KEY (user_id) REFERENCES user(id);
ALTER TABLE following ADD FOREIGN KEY (following_id) REFERENCES user(id);
ALTER TABLE status ADD FOREIGN KEY (user_id) REFERENCES user(id);

これを FuelPHP のマイグレーション機能で利用できるようにします。ここでは DBUtil クラスを利用しています。DBUtilのドキュメントとDBUtilのソースコードを元に作っています。php oil generate で作成したものではありませんのでご注意ください。

元のSQLとの違い
元のSQLはINNODBを指定していますが、下記コードではこの指定は記述していません。
元のSQLには更新日時は無いのですが、FuelPHP では作成日時と更新日時の両方を持たせることが推奨っぽいので追加しています。

namespace FuelMigrations;

class Create_users
{
	public function up()
	{
		DBUtil::create_table('users', array(
			'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true),
			'user_name' => array('constraint' => 20, 'type' => 'varchar', 'unique' => true),
			'password' => array('constraint' => 40, 'type' => 'varchar'),
			'created_at' => array('constraint' => 11, 'type' => 'int'),
			'updated_at' => array('constraint' => 11, 'type' => 'int'),
		), array('id'));
	}

	public function down()
	{
		DBUtil::drop_table('users');
	}
}

完全なコードは https://gist.github.com/2940037 にあります。app/migrations フォルダに設置し、php oil refine migrate と実行すると、データベースが作成されます。(データベースは事前に作成しておいてください。またデータベースの設定はあらかじめ config/development/db.php 等で行っておいてください。)

関連

Posted in fuelphp | Tagged データベース, マイグレーション
← WordPress フォーラムで投稿数の多いユーザー ver.3.4 FuelPHP の Parser の設定 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.