[FuelPHP] taskでRailsライクなseedを作る
2012.02 22

FuelPHPを使い始めているのですが、良いと評価できる点にコマンドラインから実行できる便利なタスクがあります。Railsではrake, railsというコマンドで各種タスクを実行でき、それを踏襲しています。今回はその中でも初期データ作成に便利なseedという機能をFuelPHP上に作ってみました。

FuelPHPを使い始めているのですが、良いと評価できる点にコマンドラインから実行できる便利なタスクがあります。Railsではrake, railsというコマンドで各種タスクを実行でき、それを踏襲しています。今回はその中でも初期データ作成に便利なseedという機能をFuelPHP上に作ってみました。

taskを拡張するクラスを配置する

置き場所は fuel/app/tasks/*.php です。そして、seedファイルの置き場所は fuel/app/seeds/*.php としました。今回、実行できるタスクとしては以下の3つという設計にしました。

  • モデル名を指定して同名のseedを実行
  • seeds以下をすべて実行
  • モデル名を指定して同名(複数形のはず)テーブルを初期化

上記の設計を反映したコードが以下のとおり。more better な実装あれば是非ご意見いただきたく。

このソースを参考に、というか reset はパクr


それぞれのタスクを実行する場合のコマンドは以下のようになります。

  • oil r seed model_name
  • oil r seed:all
  • oil r seed:reset model_name

そして、実行されるseedファイルの中身はこんな感じに。

 'テスト1',
		'summary' => '1つめのテストデータ'
	),
	array(
		'name' => 'テスト2',
		'summary' => '2つめのテストデータ'
	)
);

foreach ($seeds as $key => $seed) {
	$model = Model_Test::forge($seed);
	$model->save();
}
?>	

この記事へのコメント

作者について

青森県内でソフトウェア・システム開発を行うフリーランスのプログラマー。元々は集中監視システム開発に従事。現在はウェブサイト製作・オンラインシステムの開発案件を中心に、プログラミングのスキルトレーニングや講演も行う。

TEL 0172-55-7030  FAX 0172-55-7031
10:00 - 18:00 土日祝休

恐れ入りますが、お急ぎの場合を除いて、メールにてお問い合わせください。