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();
}
?>